我需要在单个图形上组合相当数量(〜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.'
答案 0 :(得分:2)
最简单的解决方案是squeeze
您的数据,因为它是本质上是二维的,但仅是排列的:
plot( squeeze(M(:,1,:)), squeeze(M(:,2,:)) )
像M(:,1,:)
这样的矩阵的大小为5x1x3,而squeeze
所做的是删除大小为1的中间维度,从而得到5x3的矩阵。也可以使用permute(M(:,1,:), [1,3,2])
来实现。