绘制存储为 3D 矩阵的多个 2D 图

Plot multiple 2D graphs stored as a 3D matrix

我需要在单个图形上组合相当数量 (~15000) 的绘图。 反复进行会花费很长时间,所以我将所有数据存储在一个 3D 矩阵中,希望我可以一次绘制所有数据。

我的矩阵结构如下:

所以,如果我想显示矩阵的第一个图 M,我输入:

plot(M(:,1,1),M(:,2,1))

当然,为了一次绘制所有数据,我尝试了:

plot(M(:,1,:),M(:,2,:))

这给了我以下错误:

Error using plot
Data cannot have more than 2 dimensions.

关于如何找到绘制此类数据的快速方法的任何想法?

这是一个代码示例:

M = rand(5,2,3);

for i = 1:1:size(M,3)
    M(:,1,i) = linspace(1,size(M,1),size(M,1));
%     plot(M(:,1,i),M(:,2,i))  % Plot iteratively --> Works but slow
%     hold on 
end

plot(M(:,1,:),M(:,2,:)) % --> Gives the error 'Data cannot have more than 2 dimensions.'

最简单的解决方案是 squeeze 您的数据,因为它 本质上是 二维的,但只是排列:

plot( squeeze(M(:,1,:)), squeeze(M(:,2,:)) )

M(:,1,:) 这样的矩阵大小为 5x1x3,而 squeeze 所做的是删除大小为 1 的中间维度,产生一个 5x3 矩阵。这也可以使用 permute(M(:,1,:), [1,3,2]).

来实现