【问题标题】:Plot different length cell array without loop绘制没有循环的不同长度的单元格数组
【发布时间】:2018-06-28 18:42:42
【问题描述】:

我有以下代码输出:

MAT_ArrayT - 6x1 cell
MAT_ArrayY - 6x1 cell

在每个里面它看起来如下:

10000x1 double
9000x1 double
8000x1 double
7000x1 double
6000x1 double
5000x1 double

我想要一个情节,其中我得到 6 条彼此适合的线条。

我想要得到的结果如下:

for i = 1:6
    plot(MAT_ArrayT{i,:},MAT_ArrayY{i,:})
end

但没有 for 循环,因为我需要绘制 1k 多条线需要更长的时间。

谢谢。

【问题讨论】:

  • 您需要绘制 6 行吗? for 循环对此有好处,为什么说 1K 行?不是6吗?另外,如果真的有 1K,那么plot 将无助于您查看任何内容。如果你真的在绘制 1K 行,那么它不是 for 循环慢的部分,它是你计算机的图形输出,要绘制的东西太多
  • 是的,我有大约 1k 行的完整代码,我只是想让这个例子更清楚,所以我给了 6。所以根据你所说的,这更多地取决于我的显卡?
  • 它的绘图太多,考虑以不同的方式显示它。屏幕上有 1000 个图,无论如何你都看不到太多
  • 我问是因为在 for 循环中绘图并使用 hold 需要很多时间

标签: arrays matlab for-loop plot cell


【解决方案1】:

如果您将 Matlab 的绘图函数交给一个数组,它会将数组的每一列绘制为自己的行。例如:

A = 1:2:20;
B = 1:10;

C = [A', B']
plot(C)

生产

C =

 1     1
 3     2
 5     3
 7     4
 9     5
11     6
13     7
15     8
17     9
19    10

如我们所见,plot() 将 C 的第一列绘制为蓝线,将 C 的第二列绘制为橙色线,我们只用一行代码就完成了。如果你可以设置你的单元格数组,这样你想要绘制的每一行都是它自己的列,这应该能够为你加快速度。

【讨论】:

    【解决方案2】:

    快速而简单的解决方案就像我的answer to your previous question 一样,用NaN 填充较短的向量。 NaN 点未绘制。

    【讨论】:

      猜你喜欢
      • 2018-06-28
      • 1970-01-01
      • 2022-01-26
      • 2015-09-09
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      相关资源
      最近更新 更多