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

时间:2019-09-11 14:10:44

标签: matlab matrix multidimensional-array plot matrix-indexing

我需要在单个图形上组合相当数量(〜15000)的地块。 迭代地进行将要花费很多时间,因此我将所有数据存储在3D矩阵中,希望可以一​​次绘制所有数据。

我的矩阵结构如下: Matrix structure

因此,如果要显示矩阵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.'

1 个答案:

答案 0 :(得分:2)

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

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

M(:,1,:)这样的矩阵的大小为5x1x3,而squeeze所做的是删除大小为1的中间维度,从而得到5x3的矩阵。也可以使用permute(M(:,1,:), [1,3,2])来实现。