質問: forループを扱うとき ベクトルが txt1 txt2 txt3 のように,20まであります. このように沢山あるベクトルに対して,cfit関数を使用してカーブフィッティングを行い,そのピーク位置を算出するという処理を行おうとしています. そこで,質問があります.forループ内で名前が違うベクトルに対して,ループ内の変数に応じて処理を変更する用に記述したいです. ベクトル内の要素を指定したいときはtxt1[n]のような形で記述すれば良いかと思うのですが,複数のベクトルで一部だけ名前が違う場合はどのように記述すればよいのか分かりません. 初歩的な質問で大変申し訳ありませんが,お力を貸していただけると助かります.
回答: forループ内で名前が違うベクトルに対してループ内の変数に応じて処理を変更する場合は、まずは一つの変数にまとめる方法はいかがでしょうか。 ・txt1,txt2,txt3, ... が数値ベクトルであれば、一列目に txt1、二列目に txt2、三列目に txt3、 ... の2次元の行列に連結して、一つの変数にまとめます。 その後に for 文で最初のループでは 一列目の全行 (txt1)を抽出して処理、二巡目のループでは二列目の全行 (txt2の部分) を抽出して処理する、結果は同じように行列にまとめるという具合にプログラムを作成すればできるかなと思います。 ※ ベクトル内の要素を指定して、データを抽出する方法は以下のドキュメンテーションが参考になるかなと思います。 https://jp.mathworks.com/help/matlab/math/array-indexing.html ・txt1,txt2,txt3, ... が文字などのベクトルであれば、セル配列を扱えば、同じように連結して一つの配列の変数にまとめることができます。セル配列の作り方や抽出の方法は少し難しいので、以下のドキュメンテーションが参考になるかなと思います。 https://jp.mathworks.com/help/matlab/matlab_prog/what-is-a-cell-array.html あとは、ループ内の順番に応じて処理を変更するのが一番シンプルな方法かなと思います。