- ベストアンサー
等間隔にベクトルを作成。(MALAB->C)
初めまして。 今、MATLABのプログラムをCに書き直すという作業をしています。 MATLABもCも初心者レベルなので簡単な質問かも知れませんが お答え頂けると有難いです。 MATLABで F=linspace(1/fs,1000,2^12) という一文があるのですが、これは 「配列Fに1/fsから1000の間でリニアに等間隔な4096点のベクトルを作成する」 という意味でいいのでしょうか。 それはつまりF[0]=1/fs、F[4095]=1000であるということですか? Cに直す以前に「ベクトルを作成する」という概念が いまいちわからなくてつまづいてます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MATLABでは、1次元配列をベクトル(数列)、多次元配列をマトリクス(行列)と呼びます。ここでのベクトルは、データの型とかではないので、そのまま配列を使用して大丈夫ですよ。というか、これは配列のことです。ちなみに、MATLABでは基本的にDouble型とChar型を使用します。 > このような宣言は要素数が4096個の一つの配列array > と理解していたのですが間違っているのでしょうか。 その認識であっています。 #1の方は、『(要素数)4096個の配列ができます』と仰っているのだとと思います。 最後に、MATLABをCにリプレースする際には、以下の部分に気を付けると良いと思います。 (1)行列演算のfor文化 (主に行列同士を *、/ で計算している箇所。.*、./ は意味が違うので注意が必要です) (2)if文の省略 ((0<a).*a 等と記述されている箇所) (3)最終的な配列サイズ、構造体メンバの確認 (MATLABは配列サイズ、構造体メンバの動的な拡張、追加が可能です) (4)MATLABの組込み(or ToolBoxの)数学関数の置換
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
>「配列Fに1/fsから1000の間でリニアに等間隔な4096点のベクトルを作成する」 >という意味でいいのでしょうか。 そのようだね >Cに直す以前に「ベクトルを作成する」という概念が >いまいちわからなくてつまづいてます。 double array[4096]; で 4096個の配列ができます。C 言語にはそもそも「ベクトル」という型はないので、配列で代用するしかないでしょう。
お礼
やはりCでは配列で代用するんですね。有難うございます。 重ねて質問というか確認なのですが、 >double array[4096]; >で 4096個の配列ができます。 このような宣言は要素数が4096個の一つの配列array と理解していたのですが間違っているのでしょうか。
お礼
>MATLABでは、1次元配列をベクトル(数列)、多次元配列をマトリクス(行列)と呼びます。 1次元配列をベクトルと呼ぶことを初めて知りました。勉強不足ですね。 >MATLABをCにリプレースする際 細かい注意点等有難うございます。 組み込み関数をCに直す作業が一番厄介になりそうですが お二方の助言に注意して頑張ります!