for文でplotさせる方法
154 views (last 30 days)
Show older comments
ワークスペースにあるD1~D4のデータを使ってグラフをplotしようとしています。
for n=1:4
s=num2str(n)
xx="D" + s + ".x.data"
yy="D" + s + ".y.data"
plot(xx,yy)
end
で実行すると
エラー:plot
入力引数が不足しています。
となります。
何が間違っているのか、ご教示頂けると助かります。
宜しくお願い致します。
0 Comments
Accepted Answer
Kojiro Saito
on 5 Apr 2021
Edited: Kojiro Saito
on 5 Apr 2021
上記のコマンドでは
plot("D1.x.data", "D1.y.data")
のように、plotの中に文字列が入ってしまっているのでエラーが出ています。
文字列からワークスペースの変数に変換するxx = evalin('base', xx) のようなコマンドを入れておけば良いと思います。
また、このままではプロットがfor毎に上書きされ、最後のD4だけがプロットされるようになりますので、for毎にプロットを別にしたいならfigureを入れたり、forの全てのプロットを重畳したいならhold onを入れたりしたほうが良いかと思います。
for毎にプロットを分けたい場合のサンプル:
for n=1:4
s=num2str(n)
xx="D" + s + ".x.data";
yy="D" + s + ".y.data";
xx = evalin('base', xx); % 文字列からワークスペース変数xxに変換
yy = evalin('base', yy); % 文字列からワークスペース変数yyに変換
figure
plot(xx,yy)
end
forの全てのプロットを重畳する場合のサンプル:
for n=1:2
s=num2str(n)
xx="D" + s + ".x.data";
yy="D" + s + ".y.data";
xx = evalin('base', xx); % 文字列からワークスペース変数xxに変換
yy = evalin('base', yy); % 文字列からワークスペース変数yyに変換
if n > 1
hold on % 2回目以降はプロットを重畳する
end
plot(xx,yy)
end
hold off % プロットの重畳を解除する
More Answers (0)
See Also
Categories
Find more on ライン プロット in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!