MATLAB是否提供了一种更优雅的方法来迭代3D数组以获得第三维向量?

neu*_*ker 5 arrays iteration matlab loops multidimensional-array

我试图通过一个固定大小的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
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,而不是通过2级for循环,精确指向每次迭代时绘制的向量?

我得到的是MATLAB中每个数组都有一个线性索引,但我很难想出一种可以避免双循环的方法.

Lui*_*ndo 2

plot应用于矩阵会绘制该矩阵的列。因此:重新排列维度,使第三个维度成为新的第一个维度,其他维度合并到新的第二个维度中,然后调用plot

plot(reshape(permute(respo, [3 1 2]), size(respo,3), []))
Run Code Online (Sandbox Code Playgroud)

  • 这似乎是要走的路,请注意,如果原始代码使用“hold on”而不是“hold all”,则可以通过添加“,'b”作为绘图命令的附加输入来模仿这一点。 (2认同)