• 締切済み

matlabにおいて、

matlabにおいて、 [(-Q*A) (Q*A) (-Q*A^2) (Q*A^2) ....(Q*A^29)]のような行列を、 for i = 1:29 のみたいな感じのもので表現できますでしょうか。 それかほかにもっといい表現の仕方はありますか? ちなみにQもAも2行2列の行列です。

みんなの回答

  • ciel_bleu
  • ベストアンサー率41% (66/160)
回答No.1

ループ処理を使って新しい行列を作ることは可能です。 わりと簡単にできますよ。あんまりループが長いと処理に時間がかかるので行列演算でやったほうが早い場合もありますが、このぐらいの計算量だったら1秒(PC specに依存しますが)で終わります。 しかし、どういう行列を作りたいのか、この質問ではいまいちよくわからないので補足をお願いします。 Q= Q11 Q12 Q21 Q22 A= A11 A12 A21 A22 って感じなんですよね。 それでこの4つずつのQとAの組み合わせを使って4つのベクトルを作りたいって事でしょうか。 M11=[(-Q11*A11) (Q11*A11) (-Q11*A11^2) (Q11*A11^2) ....(Q11*A11^29)] M12=[(-Q12*A12) (Q12*A12) (-Q12*A12^2) (Q12*A12^2) ....(Q12*A12^29)] M22=[ ...... ] ってことですか? それだったら、 ---- M11=[]; for i=1:29; M=[-Q11*A11^i Q11*A11^i]; M11=[M11 M]; end ---- こんなかんじですが。 上の式でのポイントは最初に空行列M11を作っておくということです。

siyasiyo
質問者

お礼

参考にしてやってみます!ありがとうございました。

関連するQ&A