在 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
调试我建议替换eval
以disp
确保您生成正确的代码
循环使用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)])