[英]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.