forループを扱うとき
显示 更早的评论
ベクトルが
txt1
txt2
txt3
のように,20まであります.
このように沢山あるベクトルに対して,cfit関数を使用してカーブフィッティングを行い,そのピーク位置を算出するという処理を行おうとしています.
そこで,質問があります.forループ内で名前が違うベクトルに対して,ループ内の変数に応じて処理を変更する用に記述したいです.
ベクトル内の要素を指定したいときはtxt1[n]のような形で記述すれば良いかと思うのですが,複数のベクトルで一部だけ名前が違う場合はどのように記述すればよいのか分かりません.
初歩的な質問で大変申し訳ありませんが,お力を貸していただけると助かります.
采纳的回答
更多回答(1 个)
Toshinobu Shintai
2020-3-27
そのような場合は「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の()の中の文字列をコマンドウィンドウに貼り付けて実行する、ということをしていると思えば、理解は早いかと思います。
类别
在 帮助中心 和 File Exchange 中查找有关 ループと条件付きステートメント 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!