for文でplotさせる方法

73 visualizaciones (últimos 30 días)
Kazu Ari
Kazu Ari el 5 de Abr. de 2021
Comentada: Kazu Ari el 5 de Abr. de 2021
ワークスペースにある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
入力引数が不足しています。
となります。
何が間違っているのか、ご教示頂けると助かります。
宜しくお願い致します。

Respuesta aceptada

Kojiro Saito
Kojiro Saito el 5 de Abr. de 2021
Editada: Kojiro Saito el 5 de Abr. de 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 % プロットの重畳を解除する
参考:evalinhold
  1 comentario
Kazu Ari
Kazu Ari el 5 de Abr. de 2021
ありがとうございます。
plotの中はワークスペース変数にしなければいけないとのこと、今理解しました。
プロットの重複についてもご指摘ありがとうございました。
とても助かりました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 数学 en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!