2014-01-28 83 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