在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)])