为什么我的情节不在循环中用于不同的图形表示?

时间:2017-05-24 07:01:43

标签: matlab matlab-figure

我有一个矩阵“容量”,我想绘制它的行,为此我使用了一个循环,我的代码是

for j_1=1:8    
plotStyle = {'k -','r +','g *','b.','y o','r--','b d','g s'};   
hold on;
plot(x_1,capacity(j_1,:),plotStyle(j_1));
end
hold off;

x_1只是x轴,x_1中的元素数等于容量列数。但是我收到的错误是:

使用情节

时出错

无效的第一个数据参数

varyDiffusioncofficient出错(第124行)

积(X_1,容量(j_1,:),plotStyle)

2 个答案:

答案 0 :(得分:1)

编辑:您需要做的就是在绘图调用中用花括号替换圆括号,即

plot(x_1,capacity(j_1,:),plotStyle{j_1});

或者,您可以将颜色和线条样式分开并以这种方式进行调用。当您制作更大的图并希望通过颜色和线条组合以不同方式循环时,这可能很方便。

capacity = rand(8,8);     % test data for a workable example
x_1 = 1:8;

for j_1=1:8    
linestyle = {'-','+','*','.','o','--','d','s'};   
color = {'k','r','g','b','y','r','b','g'};   
hold on;
plot(x_1,capacity(j_1,:),'color',color{j_1},'linestyle',linestyle{j_1});
end
hold off;

答案 1 :(得分:0)

您的问题是访问具有正常括号()的单元格数组,您应该使用花括号{}

plotStyle = {'k -','r +','g *','b.','y o','r--','b d','g s'};  
% plotStyle(1) = {'k -'}   : cell
% plotStyle{1} = 'k -'     : string

所以

hold on;  % Move the hold and style assignment outside the loop for efficiency
plotStyle = {'k -','r +','g *','b.','y o','r--','b d','g s'};
for j_1=1:8        
    plot(x_1,capacity(j_1,:),plotStyle{j_1});
end
hold off;

Documentation link for accessing data in a cell array