在MATLAB中,我有以下從腳本數據的輸出:MATLAB:情節與For循環固定變量
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會產生一個情節。
感謝
在MATLAB中,我有以下從腳本數據的輸出:MATLAB:情節與For循環固定變量
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會產生一個情節。
感謝
循環升模擬可變變量)和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
如果你有很多,你可能想自動保存地塊,由該EVAL線後立即插入下面的行循環:
print('-dpng','-r100',['A' int2str(i)])
你可以做的是使用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
(WIL正確的代碼
完美!!!!謝謝。 – user1608954 2013-05-09 22:04:15
@ user1608954我強烈建議不要使用eval,而是調整你的腳本來製作一個單元矩陣A,這樣A {1} == A1等...使用eval就會打開自己的錯誤世界,很難調試,難以閱讀和難以維護。 – Dan 2013-05-09 22:26:08
+1表示使用figure(),但其他兩個答案都忘記包含它。 – Dan 2013-05-10 06:37:50