• 締切済み

MATLABプログラミングをCのプログラミングに変換

MATLABでよくやる以下のプログラミング方法を効率よくCでプログラムするにはどうすべきですか? a=[]; for i = 1:100 a_k = [1 2 3 4];<<-a_kは1行4列の行列です a = [a a_k];<<-特にこの部分 end よろしくお願いします。

みんなの回答

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.3

#2ぼけぼけ。 for i=1:100  s = 1 + N*(i-1);  e = s + N-1;  a(s:e) = a_k; end こんな感じかな。 あ、MATLABでiは確か虚数を表すから使わないほうが良かった気もする。 うろ覚え。

bonzomania
質問者

お礼

なるほど、ありがとうございます。 MATLABでもCでも試してみます。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

これは、MATLABでもよくないプログラムです。 MATLABのエディタのコードアドバイザみたいなのが、 「ループ内で変数aが増加する可能性があります。メモリの事前割り当てを検討して下さい」 というような警告を発しているでしょう? 実行パフォーマンスも最悪のはずです。 したがって、MATLABでもCでも、 「ループ回数から使用するメモリ量を事前に算出し、  メモリの事前割り当てを行ってからプログラミングをする」 ことが、最も効率が良いプログラムです。 MATLABなら、 N = length(a_k); a = zeros(N*100); for i=1:100 a(k:k+N-1) = a_k; end とか。まあ、この程度ならrepmatの1文で作ってしまえますが。 Cも同様。メモリを確保して、for文でindex計算をして代入する。

回答No.1

リスト構造にすればよいのでは?

関連するQ&A

専門家に質問してみよう