forループを扱うとき
Show older comments
ベクトルが
txt1
txt2
txt3
のように,20まであります.
このように沢山あるベクトルに対して,cfit関数を使用してカーブフィッティングを行い,そのピーク位置を算出するという処理を行おうとしています.
そこで,質問があります.forループ内で名前が違うベクトルに対して,ループ内の変数に応じて処理を変更する用に記述したいです.
ベクトル内の要素を指定したいときはtxt1[n]のような形で記述すれば良いかと思うのですが,複数のベクトルで一部だけ名前が違う場合はどのように記述すればよいのか分かりません.
初歩的な質問で大変申し訳ありませんが,お力を貸していただけると助かります.
Accepted Answer
More Answers (1)
Toshinobu Shintai
on 27 Mar 2020
そのような場合は「eval」を使うとできます。例えば、txt1からtxt20までの変数に順番に文字を格納したいときは、以下のようにすることができます。
%% Init
txt1 = 'a'; txt2 = 'a'; txt3 = 'a'; txt4 = 'a'; txt5 = 'a';
txt6 = 'a'; txt7 = 'a'; txt8 = 'a'; txt9 = 'a'; txt10 = 'a';
txt11 = 'a'; txt12 = 'a'; txt13 = 'a'; txt14 = 'a'; txt15 = 'a';
txt16 = 'a'; txt17 = 'a'; txt18 = 'a'; txt19 = 'a'; txt20 = 'a';
%% loop
%それぞれの変数にループ処理をする
for i = 1:20
eval(['txt', num2str(i), ' = ', char(39), char(96 + i), char(39)]);
end
evalの()の中の文字列をコマンドウィンドウに貼り付けて実行する、ということをしていると思えば、理解は早いかと思います。
Categories
Find more on ループと条件付きステートメント in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!