LoginSignup
1
3

More than 5 years have passed since last update.

Matlab::ワークスペース内にある連番の変数をfor文でplotする方法

Posted at
課題
  • Workspace(ワークスペース)に「ID1, ID2,・・・」といった連番の変数がある.
  • これらをfor文でplotしていきたい.
解決方法
  1. 連番IDの部分を「plot(ID+'i')」i=1,2,・・のイメージで,forループでplotしていく.
  2. ID+'i'の部分を,eval(), strcat(), num2str()を使って記述する.

使用Matlab関数


以下のようなデータがWorkspaceにあるとします.
* ID1, ID2,・・・,ID9 (各々はベクトルデータ)

これを例えばsubplot()で3×3で9つのグラフを描く場合,以下ですみます.

for i=1:1:10
    subplot(3,3,i)
    plot(ID,eval(strcat('ID',num2str(i))));
end

ちょっと詳しくみると  

num2str(i)

これでfor文中の数字iをstring型に変換し

strcat('ID',num2str(i)))

により,「string型のID+string型のi」を行っています.つまり,「IDi」という形にしています(※).
そして,

eval(strcat('ID',num2str(i))))

により,string型の変数を用いて,Workspace内のベクトル変数を呼び出します.

※ここで間違いやすいのが,例えばi=1のときに「ID1」となるが,これは文字的に同じなだけでWorkspace内のID1とは紐付いていません.

1
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3