0

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

谢谢

4

3 回答 3

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

于 2013-05-09T21:54:30.620 回答
5

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

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

只有当你真的不能做其中任何一个时,你才应该考虑使用eval

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

调试我建议替换evaldisp确保您生成正确的代码

于 2013-05-09T21:57:49.540 回答
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

如果您有许多 As,您可能希望自动保存绘图,方法是在循环中的 eval 行之后插入以下行:

print('-dpng','-r100',['A' int2str(i)])
于 2013-05-09T21:59:52.823 回答