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



在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将生成一个绘图。

感谢

您可以使用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

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

如果这不可能,那么如果只有3个,我建议你手动将它们粘贴在细胞阵列中,即A{1} = A1; A{2} = A2; A{3} = A3

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

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

为了调试,我建议用disp替换eval,以确保生成正确的代码

使用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

如果你有很多As,你可能想通过在循环中的eval行后面插入以下行来自动保存绘图:

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

最新更新