プロが教える店舗&オフィスのセキュリティ対策術

初めまして。
今、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に直す以前に「ベクトルを作成する」という概念が
いまいちわからなくてつまづいてます。

A 回答 (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の)数学関数の置換
    • good
    • 0
この回答へのお礼

>MATLABでは、1次元配列をベクトル(数列)、多次元配列をマトリクス(行列)と呼びます。
1次元配列をベクトルと呼ぶことを初めて知りました。勉強不足ですね。

>MATLABをCにリプレースする際
細かい注意点等有難うございます。
組み込み関数をCに直す作業が一番厄介になりそうですが
お二方の助言に注意して頑張ります!

お礼日時:2007/10/07 13:09

>「配列Fに1/fsから1000の間でリニアに等間隔な4096点のベクトルを作成する」


>という意味でいいのでしょうか。
そのようだね

>Cに直す以前に「ベクトルを作成する」という概念が
>いまいちわからなくてつまづいてます。

double array[4096];
で 4096個の配列ができます。C 言語にはそもそも「ベクトル」という型はないので、配列で代用するしかないでしょう。
    • good
    • 0
この回答へのお礼

やはりCでは配列で代用するんですね。有難うございます。

重ねて質問というか確認なのですが、
>double array[4096];
>で 4096個の配列ができます。
このような宣言は要素数が4096個の一つの配列array
と理解していたのですが間違っているのでしょうか。

お礼日時:2007/10/06 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!