绘制存储为 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])
.
来实现
我需要在单个图形上组合相当数量 (~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])
.