簡體   English   中英

MATLAB是否提供一種更優雅的方法來遍歷3D數組以獲得3維向量?

[英]Does MATLAB offer a more elegant way to iterate through 3D array to get 3rd dimension vectors?

我正在嘗試通過固定大小的3d數組進行迭代,以繪制第3個矢量尺寸,如下所示:

%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

有沒有比通過2級循環精確地指向每次迭代繪制的矢量更好的方法了?

我在MATLAB中為每個數組建立了線性索引,但是我想出了一種避免雙重循環的方法。

好吧,我想您可以將其重塑為只需要一個循環:

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)')

plot應用於矩陣圖是矩陣的列。 因此:重新排列尺寸,以使第三個成為新的第一個,其他合並成新的第二個,然后調用plot

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM