MATLAB:使用For循环固定变量的绘图

时间:2013-05-09 21:45:53

标签: matlab loops

在MATLAB中,我有以下脚本输出数据:

A1 = [1 2;3 4]
A2 = [2 2; 4 5]
A3 = [3 5; 7 8]

我需要创建一个for循环来逐步执行每个变量和绘图。 类似的东西:

for i = 1:3
plot(A(i))
end

所以A1会产生一个情节。 A2将生成一个图。 A3将产生一个情节。

由于

3 个答案:

答案 0 :(得分:5)

您可以使用eval

for ii = 1:3
   cmd = sprintf('plot( A%d );', ii );
   eval( cmd );
end

但是,建议不要使用eval。最好的方法是,如果您可以更改生成A1 ... A3的代码,那么它可以创建单元格数组A{1},... A{3},甚至结构字段S.A1,...,S.A3

答案 1 :(得分:5)

我建议您更改输出这些变量的脚本,而不是将它们粘贴在单元格数组或结构中。

如果那是不可能的,那么如果只有3个,我会建议你手动将它们粘在一个单元格数组中,即A{1} = A1; A{2} = A2; A{3} = A3

只有当你真的不能做到这两种情况时,你应该考虑使用eval

for ii = 1:n
    eval(['plot(A', num2str(ii), ')']);
end

调试我建议将eval替换为disp以确保您生成正确的代码

答案 2 :(得分:1)

循环使用eval(将模拟变量变量)和figure(将为每个A创建一个数字):

A1 = [1 2;3 4];
A2 = [2 2; 4 5];
A3 = [3 5; 7 8];

for i = 1:3
    figure(i);
    eval(['plot(A' num2str(i) ');'])
end

如果您有许多因为您可能想要自动保存图表,只需在循环中的eval行后面插入以下行:

print('-dpng','-r100',['A' int2str(i)])