2015-11-12 211 views
0

我有一個列向量A.MATLAB:我如何重新排列這個向量?

我要重新排序甲進入一個新的列向量B,應安排如下,取各第12元素:

[元件1,13,25,。 ..然後2,14,26,...,3,15,27,等]

我可以用下面的代碼開始

B = A(1:12:length(A)) 

我可以繼續這樣做,並追加到B.但是,我懷疑有一個更好的方法來做到這一點,而不重複t代碼十二次。

+1

使用'reshape':http://www.mathworks.com/help/matlab/ref/reshape.html – David

+0

你可以使用兩個嵌套的'爲loop'獲得來自呼叫的數量固定的答案。 'A = 1:1:144; B =零(大小(A));對於ii = 1,大小(A,2)/ 12;對於kk = 1:12,爲 ; (ii +(kk-1)* 12)= A(kk +(ii-1)* 12); 結束; end;' – SimoJoe

+1

@SimoJoe當然循環更新,但是您的解決方案可以通過向量化來減少循環次數。 – patrik

回答

1

擴大戴維斯評論(這給出了一個很好的建議,但有點模糊的)。您可以使用重塑來創建矩陣,其中行具有您想要的形狀[1,13,15, ...; 2,14,26, ...; ...]。然後,您可以轉置矩陣並重新使用重新整形。該示例的規模稍小一些,長度爲24,排列較短的矢量[1,9,17,2,10,18, ...](步驟8)。

a = 1:24 
q = reshape(a,8,3) 
r = q.' 
b = reshape(r,1,24) 

請注意,如果元素的數量不在M * N,則可能需要填充零。

下面你也會告訴你,Matlab的工作縱列,這可能是你將在這裏學到的最重要的事情的例子。使用這些知識,你將能夠在將來編寫更有效的Matlab代碼。