【问题标题】:How to increment and decrement within a vector in matlab如何在matlab中的向量内递增和递减
【发布时间】:2014-01-28 00:42:59
【问题描述】:

有没有更简单的方法来创建这样的向量 b=[1,3,5,7,9,7,5,3,1]?

我所做的是,我基本上将向量分为增加和减少部分,并使用horzcat如下:

a=horzcat((1:2:9),(7:-2:1));

disp(a);

但是,这似乎不是很有效。 有没有更简单的方法来做到这一点,而不必声明和连接两个向量?

谢谢。

【问题讨论】:

  • 代码看起来效率很高。

标签: matlab vector increment decrement


【解决方案1】:

这并不是非常低效,不。但是,您无需通过姓名致电horzcat

a = [1:2:9 7:-2:1]

但如果你想避免第二组 colon 运算符,你可以翻转第一面:

a = 1:2:9;
a = [a fliplr(a(1:end-1))]

但是你有另一个colon,而且第一种方式肯定更有效。

如果c-1 可以被s 整除,则可能被c = 9; s = 2; b = 1:s:c-2; a = [b c fliplr(b)]; 整除,但我不认为将这样的简单操作复杂化有什么意义......除非这是你获得成功的方式。 ;)

【讨论】:

  • a = 1:2:7; a = [a 9 fliplr(a)];不是更有效率吗?不是很明显,但它避免了额外的冒号。
  • @MrAzzaman 有趣的是,我只是为了通用而用变量输入它。 :)
  • 如果您想非常笼统:c = 9; s = 2; cs = floor(c/s);a = c + s*-abs((1:(2*cs+1))-(cs+1)) - rem(c-1,s);。但这只是愚蠢的。
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2020-12-31
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
相关资源
最近更新 更多