2017-02-23 81 views
0

很簡單的問題,但我沒有發現任何東西......矢量化的循環

我有不同的部分來分割我的代碼並運行它下面的方式,因爲有些矩陣是建立從左至右還有一些從右向左通過向後感應。例如,如果我在3個部分拆分它,我想在該順序運行部分:

1, 2, 3, 

1, 2, 

1, 

1, 2, 

1, 2, 3. 

所以我需要的載體[1,2,3,1,2,1,1,2,1 ,2,3]。但由於節數遠大於3,我想要構建一個通用矢量:

1 : noSections 

1 : noSections - 1 

... 

1 

... 

1 : noSections 

我該怎麼做?

+0

在一個句子:我想建立一個向量[1:noSections,1:noSections-1,1:noSections -2,...,1:1,1:2,1:3,...,1:noSections]。 – LenaH

回答

3

您可以使用arrayfun,這對您的工作來說相當不錯。

cell2mat(arrayfun(@(x)1:x, [n:-1:1 2:n], 'UniformOutput', false)) 

說明:

[n:-1:1 2:n] % create the vector for the last element of each row, i.e. the vector [n, n-1, ..., 1, 2, ..., n] 

@(x)1:x % Generate a 1:x vector for each x, this is done for each element of the previous vector 

對於示例:

n = 3; 
cell2mat(arrayfun(@(x)1:x, [n:-1:1 2:n], 'UniformOutput', false)) 

ans = 

    1  2  3  1  2  1  1  2  1  2  3 
+0

超級,會做這份工作,非常感謝! – LenaH