在Matlab中绘制几行(在单元格数组中循环行样式)

时间:2017-05-22 07:53:18

标签: matlab plot matlab-figure

我已编写此循环来绘制每行结果,并收到错误消息

  

使用绘图时出错。第一个数据参数无效。

到目前为止它看起来像这样

test=rand(5,6);
xint=[1:1:6];
LineSpec = {'-y', '--m', ':c', '-r.', '-b', ':s'};

for ii=1:5,
    plot(xint,test(ii,:),LineSpec(ii),'linewidth',2);
    hold on;
    legend_str{ii} = num2str(ii);
end

如果我使用plot(xint,test(ii,:),'-y','linewidth',2)则可行。但是,如何在循环换行样式时避免错误?

1 个答案:

答案 0 :(得分:1)

你应该写:

plot(xint,test(ii,:),...
        LineSpec{ii},...
        'linewidth',2);

LineSpec是一个单元格数组,因此LineSpec(ii)会返回一个单元格,而plot则会要求将字符数组作为行属性。

您可以在致电LineSpec时看到差异:

>> LineSpec{1}
ans =
-y
>> LineSpec(1)
ans = 
    '-y'

当输出是单元格时,答案将缩进并具有单引号。