for文でplotさせる方法
    조회 수: 19 (최근 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개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Annotations에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
