2014-01-13 20 views
5

我想重複以繪製這樣的第三向量維槽的固定尺寸的3D陣列:MATLAB是否提供了一種更優雅的方式來遍歷3D數組以獲得第三維向量?

%respo is a 3D array of fixed size defined above 
for ii = 1:size(respo,1) 
    for jj = 1:size(respo,2) 
     plot(squeeze(respo(ii,jj,1:8))) 
    end 
end 

有沒有更好的方式來與準確指向for循環做到這一點比2平每次迭代繪製的矢量?

我得到那裏是MATLAB中的每個數組的線性索引,但我很難想出一種方式,從雙循環中保存。

+1

如今它已經不再重要,以避免環路不惜一切代價。特別是如果代碼清晰可讀,它就在這裏,我會保留它們。 – bdecaf

+0

我不得不說我找到了答案和所有有用的評論,所以謝謝你們!然而,由@ luis-mendo提供的單線程是我使用的那個,因爲它在最大程度上爲這些MATLAB函數提供了便利。 –

回答

2

plot繪製該矩陣的列。所以:重新安排尺寸,使得第三成爲新的第一和別人共同結合成新的第二個,然後就打電話plot

plot(reshape(permute(respo, [3 1 2]), size(respo,3), [])) 
+2

這似乎是要走的路,請注意,如果原始代碼將使用「hold on」而不是「hold all」,那麼可以通過將','b''添加爲繪圖命令的附加輸入來模擬此操作。 –

3

嗯,我想你可以重塑它只需要一個循環:

respo_2D = reshape(respo, [], size(respo,3)) 

所以現在

for ii = 1:size(respo_2D, 1) 
    plot(respo(ii,1:8)); 
end 

(或者甚至可能plot(respo_2D(:,1:8)')取決於你想做什麼)

應用於矩陣的
相關問題