【问题标题】:Plot multiple 2D graphs stored as a 3D matrix绘制存储为 3D 矩阵的多个 2D 图形
【发布时间】:2019-09-11 14:10:44
【问题描述】:

我需要在一个图形上组合相当数量(~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.'

【问题讨论】:

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


    【解决方案1】:

    最简单的解决方案是 squeeze 您的数据,因为它本质上是 2D,但只是置换:

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

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

    【讨论】:

      猜你喜欢
      • 2020-01-06
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2023-03-09
      • 2013-09-03
      • 2023-01-31
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多