2014-01-28 38 views
1

有没有更简单的方法来创建这样一个向量b = [1,3,5,7,9,7,5,3,1]?如何在matlab中向量中递增和递减

我所做的是什么,我基本上分为载体整合入增加和减少部件和使用horzcat如下:

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

disp(a); 

然而,这似乎并不十分efficent。 有没有更简单的方法来做到这一点,而不必声明和concatanate两个向量?

谢谢。

+0

该代码似乎非常有效。 – Daniel

回答

3

这不是非常低效,没有。不过,你不需要用名字来称呼horzcat

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

但是,如果你想避免第二组colon运营商,你可以翻转的第一面:

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

但有你还有另一个colon,这样做第一种方法肯定更有效率。

可能通过c = 9; s = 2; b = 1:s:c-2; a = [b c fliplr(b)];如果c-1可以被s整除,但我没有看到像这样简单的操作复杂化的重点......除非这是你如何得到你的踢。 ;)

+0

做'a = 1:2:7是否会更有效率? a = [a 9 fliplr(a)];'?显然不是很明显,但它避免了额外的冒号。 – MrAzzaman

+0

@MrAzzaman有趣的是,我只是用一般性的变量来输入它。 :) – chappjc

+0

如果你想成为非常一般的人:'c = 9; s = 2; cs = floor(c/s); a = c + s * -abs((1:(2 * cs + 1)) - (cs + 1)) - rem(c-1,s)但那只是愚蠢的。 – MrAzzaman