for文でplotさせる方法
93 ビュー (過去 30 日間)
表示 古いコメント
ワークスペースにある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 件のコメント
採用された回答
Kojiro Saito
2021 年 4 月 5 日
編集済み: Kojiro Saito
2021 年 4 月 5 日
上記のコマンドでは
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 % プロットの重畳を解除する
その他の回答 (0 件)
参考
カテゴリ
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!