在MATLAB中,我有以下脚本输出数据:
A1 = [1 2;3 4]
A2 = [2 2; 4 5]
A3 = [3 5; 7 8]
Run Code Online (Sandbox Code Playgroud)
我需要创建一个for循环来逐步执行每个变量和绘图.就像是:
for i = 1:3
plot(A(i))
end
Run Code Online (Sandbox Code Playgroud)
所以A1会产生一个情节.A2将生成一个图.A3将产生一个情节.
谢谢
你能做的就是用 eval
for ii = 1:3
cmd = sprintf('plot( A%d );', ii );
eval( cmd );
end
Run Code Online (Sandbox Code Playgroud)
但是,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
Run Code Online (Sandbox Code Playgroud)
调试我建议更换eval
与disp
以确保你生成正确的代码