绘制没有循环的单元阵列

时间:2018-01-18 22:31:20

标签: arrays matlab for-loop plot cell

我有以下代码:

SimRun = 0
Count = 0

for b = 1:0.5:3000
.
.
.
.
    Count = Count + 1;
    ArrayT(Count) = Time;
    ArrayTgo(Count) = tgo;
    ArrayY(Count) = Y;
    ArrayYD(Count) = YD;

end

SimRun = SimRun  + 1;
MAT_ArrayT{SimRun,:} = ArrayT;
MAT_ArrayTgo{SimRun,:} = ArrayTgo;
MAT_ArrayY{SimRun,:} = ArrayY;
MAT_ArrayYD{SimRun,:} = ArrayYD;

如你所见,我有2个for循环。从内部循环我收到一个向量,从外部循环我收到一个单元格数组,其中每个单元格是一个向量。

现在,我想将单元格数据绘制成基本上大约6000行,我按如下方式进行绘制:

for i = 1:SimRun

    figure(1)
    hold on
    plot(MAT_ArrayT{i,:},MAT_ArrayY{i,:})

    figure(2)
    hold on
    plot(MAT_ArrayT{i,:},MAT_ArrayYD{i,:})

end

然而,这个解决方案需要花费很多时间来绘制所有行。

有没有更好的解决方案来存储"线"并在最后一次击中所有这些?

谢谢。

1 个答案:

答案 0 :(得分:0)

plot命令采用矩阵并将每列绘制为单独的一行。假设你的单元格数组中有列向量,并且它们的长度都相同,你可以这样做:

x = [MAT_ArrayT{:}];
y = [MAT_ArrayY{:}];
plot(x,y)

更好的方法是将这些矢量存储在数字矩阵中,这样就不需要制作额外的副本了。