• 締切済み

matlabのfor文について

matlabについて基本的な質問があります. たとえば a1 = 11 a2 = 32 a3 = 53 a4 = 63 for i = 1:length(a1) ○○○ end for i = 1:length(a2)  ○○○ end for i = 1:length(a3)  ○○○ end for i = 1:length(a4)  ○○○ end の時に,for文を一つにまとめるにはどうすればいいですか?

みんなの回答

  • m_takeda
  • ベストアンサー率100% (3/3)
回答No.2

【1】 a1=11,a2=32,a3=53,a4=63 ではなく length(a1)=11,length(a2)=32,length(a3)=53,length(a4)=63 もしくは 【2】 for i=1:length(an) (an=a1,a2,a3,a4) ではなく for i=1:an だと勝手に解釈してお答えします. 【1】の場合 for n=1:4 an=eval(['a' num2str(n)]); for i=1:length(an)  ○○○ end end 【2】の場合 for n=1:4 an=eval(['a' num2str(n)]); for i=1:an  ○○○ end end

回答No.1

・・・なにがやりたいのか良くわからんが。。。 質問のソースをの場合、for文の所は for i = 1:1 AAAA end for i = 1:1 BBBB end for i = 1:1 CCCC end for i = 1:1 DDDD end になって、for文が無くても同じなんだが・・・。 ↓ AAAA BBBB CCCC DDDD

関連するQ&A

  • MATLABのfor文の使い方について

    MATLAB(というかプログラム)初心者です 下記を教えてください よろしくお願いいたします 「つくりたいプログラム」 y1=[A B C] y2=[D E F] ・ ・ ・ y200=[AA BB CC] 上記のような200個くらいある行列に同じ操作をしたいです そこでいちばん簡単な構造を考えました ////////////////////// y1=[A B C] y2=[D E F] for i=1:2 Yi=yi*5 end ///////////// 成功イメージは Y1=[5A 5B 5C] Y2=[5D 5E 5F] となってほしいのですが回りません・・・ yiの定義のしかたがわからず困っております 初歩的な質問かもしれませんが教えてくださいよろしくお願いいたします

  • MATLABでのデータ保存(for文等で)

    初めて質問させていただきます。 MATLABで以下のようなfor文で1000回まわすとします。 for i=1:1000 c=rand(1000,1); fid=fopen('data1','wt'); fprintf(fid,'%f\n',c); end このままでは、最終的に1000回目のcの値だけがdata1に保存されます。 そうではなく、1~1000回目のcの値をそれぞれ別のファイルとして保存したいと思っております。(できればdata1~data1000という形で) 参考書などを読みあさったのですが、どう組めばいいのかわからず困っています。 for文等で、保存するファイル名の名前を、繰り返す度に変える方法などご存知の方おりましたら教えてください。よろしくおねがいします。

  • matlabで複数条件のif文を行列計算で行うには?

    matlabで複数条件のif文を行列計算で行うには? matlabではfor文などは行列計算で回したほうが高速化できると聞きました。 for文でのやりかたはわかったのですが、複数条件でのif文ではどのように書けばよいのでしょうか? 自分のプログラムは以下のようなものです for i=1:100 for j=1:100 theta_kari=atan(abs(B(j,i))/abs(A(j,i))); if A(j,i)>=0&&B(j,i)>=0 theta(j,i)=theta_kari; elseif A(j,i)<0&&B(j,i)>=0 theta(j,i)=theta_kari+(pi/2); elseif A(j,i)<0&&B(j,i)<0 theta(j,i)=theta_kari+pi; elseif A(j,i)>=0&&B(j,i)<0 theta(j,i)=theta_kari+(pi/2*3); end end end よろしくお願いします

  • MATLABのアップグレード問題

    MATLAB初心者です。 MATLAB6.1(おそらく)で開発されたコードがMATLAB7.01で動きません。 アドバイスを頂ければと思います。 1: out = {}; 2: for i=1:length(files), 3: out = [out, helper([d '/' files{i}], pat(2:end))]; 4: end 上記のコードの3行目で「Conversion to cell from char is not possible.」エラーが発生します。 MATLAB6.1から6.5のアップグレード問題で、空のセル配列の連結が原因のようです。 そこで下記のように修正しました。 1: out = {}; 2: for i=1:length(files), 3: if i==1 out = helper([d '/' files{i}], pat(2:end)); 4: else out = [out, helper([d '/' files{i}], pat(2:end))]; 5: end 6: end 1回目のループの場合は連結せず、2回目以降は連結するように修正しています。 このように修正しても意図通り動いていません。 修正方法は間違っていますか。

  • matlabのfor文でのデータ取り込み

    matlabを使って.xlsxファイルの要素を抜き出して配列にしたいと思っています。 例えば、 [S1, header]=xlsread('sample.xlsx','A1001:A1100') ここでS1にA3000からA3100まで取り込めますが、これをS2にはA1101からA1200と同様に S3,S4とfor文で取り込み最終的にS10まで行いたいです。そして、 P=[S10; S9; ・・・・S1] として一つの行列にしたいのですが、for文を使って簡単にできないでしょうか? 取り込みと、一つの行列にする部分の二つをfor文で書き表したいです。 よろしくお願いします。

  • for文の()内のメソッドは?

    普通、String型の変数strの長さを知りたいと 思ったら str.length() で調べると思うのですが、 for 文中では、こういう風になりますよね‥‥ for (int i=0; str.length; i++) ただ、while文の()内では、ちゃんとlengthメソッドの 後に()を付けていたはず。 for文の場合の()は特殊なのかなと思うのですが、 これってどういう理屈なのでしょうか? # ;(セミコロン)がどうも怪しい感じなのですが。

    • ベストアンサー
    • Java
  • for文

    質問お願い致します。 これのソースのfor文を一つの文にするにはどのように書いたらよいでしょうか? お願い致します。 //指定された文字列が"a"と"b"の両方を含む場合はtrue、なければfalseを返す public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; break; } } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'b') { answer2 = true; break; } } return answer1 && answer2; } }

    • ベストアンサー
    • Java
  • MATLABの計算精度

    いま,  A=[0.803, -0.803, 1.2124, 0.803, -0.803, -0.803, 1.2124, 0.803]; とします. このとき,次の2通りの演算をします. (i) a=0; for I=1:8  if( A(I)>=0 )   a=a+A(I)*0.25;  else   a=a+A(I)*0.75;  end end (ii) Bi=[0.25, 0.75, 0.25, 0.25, 0.75, 0.75, 0.25, 0.25]; b=sum(Bi.*A); (i)と(ii)によって得られる和の値をMATLABのコマンド上で表示すると, 同じ値として表示されるのですが,a-b と計算すると,0 ではなく, 8.04e-15のようになります.(現環境ではMATLABが使えないので,確認できませんが,もっと大きいデータでやったとき場合には,上記のように誤差が生じました). 困っているのは,現在組んでいるプログラムでは計算した値の正負によって 異なった計算をする必要があり,計算精度が非常に重要になってきます. そのため計算結果が例えば +1.4e-15となるか -6.4e-16 となるかによってその後の計算結果が大きく変わってしまいます. MATLABでは,上記(i)(ii)のような誤差が生じるためか,+1.4e-15となってほしいところが,なぜか -6.4e-16となってしまいうまくプログラムが動きません. MATLABでは,for文によって和をとるのではなく,一回でまとめて計算しなければ誤差が生じるのでしょうか? また,MATLABで計算精度を変更できないのでしょうか? (formatコマンドによって,「format short g」「format double g」としましたが有効な小数点が増減するだけで結果は同じでした.) よりよい精度で計算するにはどうしたらよいのでしょうか? 回答よろしくお願いします.

  • MATLABでの行列の全要素の和

    MATLABでの行列の全要素の和を計算するのに下の例のようにfor文を使うのとsum関数を使うのとで結果が違います。何故ですか? 計算結果の差をとってみると極々微小な差が生じてしまいます(e-10位)。 シミュレーションの中でこのような処理を行っているのでより正確な方が知りたいです。 例 A=rand(10); plus=0; sum=0; for i=1:10  for j=1:10   plus=plus+A(i,j);  end end sum=sum(A(:));

  • for文の使い方

    for文の中にif文を入れて使いたいのですが「Nextに対するforがありません」となりエラーが出てしまいます。どうしたらよいのでしょうか? If Option1.Value = True Then For i = 2 To 10  If xlSheet.Cells(i, 2).Value > 10 Then Form2.List1.AddItem xlSheet.Cells(i, 1) Next i End If End If

専門家に質問してみよう