質問: for文でplotさせる方法 ワークスペースにある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 入力引数が不足しています。 となります。 何が間違っているのか、ご教示頂けると助かります。 宜しくお願い致します。
回答: 上記のコマンドでは 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 % プロットの重畳を解除する 参考:evalin、hold