• 締切済み

FFTで小数点以下のsin周波数を検出することはできるのでしょうか?

FFTで小数点以下のsin周波数を検出することはできるのでしょうか? 私はFFTどころか「フーリエの冒険」を読んででやっとDFTがなんたるかを理解できた人間なんですが、 今どうしてもC言語のFFTのプログラムを必要としています。 で、今の私ではFFTのプログラムを作ることはできないと思ったので インターネットからプログラムをコピーして使用していたのですが、 私が調べた限りだと小数点以下のsin周波数を正常に検出できるようなFFTのプログラムはみつかりませんでした。 ですので、詳しい人がいたら小数点以下のプログラムがあるところを教えてください。お願いします。 あと気になる点があるのですが、 http://mak-oto.cocolog-nifty.com/blog/2009/10/post-84b1.html ↑のURL先の記事を読んで、小数点以下の周波数をどう検出したらいいのかよく分からなくなりました。 そこについての補足もできればよろしくお願いします。

みんなの回答

noname#210617
noname#210617
回答No.1

>小数点以下のsin周波数を正常に検出できるようなFFTのプログラム 周波数領域での検出の限界は、プログラムによって決まるのではありません。 採取したデータのサンプリング周期とサンプル数によって決まります。 リンク先の記事では >今までは基準周波数を1で考えてきたので横軸の値をそのまま適用できましたが、ほんとうは基準周波数を掛けて求めます。 と言っています。 ここで言っている基準周波数は、サンプリング周期にサンプル数をかけたもの(基準周期)の逆数です。 FFTのプログラム上では、データの時間間隔を1(サンプル周期)としていますし、得られる結果での周波数間隔は1(基準周波数)となります。 ですから、プログラム上では"小数点以下のsin周波数"というものはありません。 "小数点以下のsin周波数"という概念は、サンプル周期・基準周波数によって、実時間・実周波数に換算した後に当てはめられるものです。

関連するQ&A

  • FFTを使って異なるサンプリング周波数での周波数強度について

    100Hzのsin波に対してFFTを行い周波数スペクトルを出したときのことです。 解析条件 サンプリング周波数・・・・44.1kHz , 22.1kHz FFTの点数・・・32768点 窓関数・・・ハニング窓関数 まず、サンプリング周波数44.1kHzで解析を行い、100Hzにメインローブが現れていました。 次に、サンプリング周波数22.1kHz以外は同様の解析条件で解析を行ったのですが、サンプリング周波数44.1kHzに比べて、100Hzのスペクトル強度が下がっていました。また、サイドローブは44.1kHzに比べて上がっていました。 スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか? それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?どなたかご教授下さい。よろしくお願いします。

  • sin(wt)のFFT

    フーリエ変換に関して全くの初心者なのですが、sin(wt)をFFTしなければなりません。どのようにプログラムを書いたらよいのでしょうか?FFTに詳しいかた、教えて下さい。よろしくお願いします。

  • 周波数帯域のある信号をFFTに掛ける場合、処理結果はどうなるのでしょう

    周波数帯域のある信号をFFTに掛ける場合、処理結果はどうなるのでしょうか? 私は周波数帯域が100~10,000HZのマイクを使い録音し、そのデータを取り出し、 自作したプログラムを用いて、サンプリング周波数32768HzでFFTを掛けて、 信号の周波数特性を調べています。 ただ、FFTの処理結果によると、周波数帯域外の100HZ以下の領域に、周波数帯域内 と比べて大きな特徴が見られました。 そこで質問なのですが、この場合、自作したプログラムにミスがあるのか、 周波数帯域外の信号を録音してしまっているのか、それとも両方なのか、 それ以外にも理由があるのか、その辺りについて教えて頂ければと思います。 周波数解析の分野の理解が浅いため、酷く初歩的な質問であるかもしれませんが、 どうかよろしくお願いします。

  • 離散フーリエ変換の周波数分解能

    失礼します。 DFT(離散フーリエ変換)について質問させてください。 DFTの周波数分解能は時間領域でのデータが持つ幅の逆数で決まりますが、 この周波数分解能で表現されなかった周波数成分はどこに行くのか教えていただけないでしょうか? DFTでの離散的な周波数の間にある成分はどこへ行くのか? 単純に考えて、DFTは形としては級数和なので、 それらの成分はどこかに畳み込まれているように思うのですが、 表現されない周波数成分の情報は消されたりするのでしょうか? よろしくお願い致します。

  • デジタル信号の周波数分析の手法

    デジタル信号の周波数分析の手法にはどのようなものがありますか? 私が知っているのは、DFT、FFT、z変換だけです。 他にある方法を教えてください。

  • FFTのサンプル点について

    FFTについて質問したいのですが、ある本を読んでいたら正弦波を時間軸に離散化(そこでは、一周期8サンプル)して、この離散時間信号のスペクトルを 512 点 FFT を用いて見てみましょう、と書いてありその周波数特性の結果がありました。 僕は、今まで512 点 FFT の512点というのは時間軸に一周期内で512点と思っていたのですが、違うのでしょうか?

  • FFTサンプル点について

    FFTについて質問したいのですが、ある本を読んでいたら正弦波を時間軸に離散化(そこでは、一周期8サンプル)して、この離散時間信号のスペクトルを 512 点 FFT を用いて見てみましょう、と書いてありその周波数特性の結果がありました。 僕は、今まで512 点 FFT の512点というのは時間軸に一周期内で512点と思っていたのですが、違うのでしょうか?

  • なぜ、小数点以下の数字を掛けると、数が減るの(小学校4年生)

    小学校4年生の娘なんですが、まだ、小数点以下の掛け算をならっていません。 小数点以下の数を掛けると、なぜ「減るのか」 小数点以下の数を割ると、なぜ「増えるのか」理解できません。 どこかよいホームページがありましたらおしえてください。

  • FFTを使って信号を周波数変換する方法を教えてください。

    音信号を周波数変換するプログラムを作成しています。 FFTを使って実現しようとしているのですが、うまくいきません。 現時点で作った方法では、 (1)FFTする。結果は配列x_re[NFFT]、x_im[NFFT]に格納。(x_re:実数部 x_im:虚数部 NFFT:ポイント数、配列の内容としては周波数の低い順に結果データが並んでいる) (2) x_re,x_imの内容をずらす。(例えば以下のように配列内容を1つずらせばIFFTをした時周波数が高くなるはず) for(i=0;i<NFFT-1;i++){ x_re[i+1]=x_re[i]; x_im[i+1]=x_im[i]; } (3)配列x_re[NFFT]、x_im[NFFT]に対しIFFTする。 FFT・IFFTが正しく動作するのは確認しています。 (動作実績も結構あります。(2)を省略し(1)(3)だけとすれば出力結果は入力結果と同じ(出力音声を聴いた感じで)になるので、正しく動作していると思います。) よって(2)が間違っていると思います。 (2)をどのようにすれば周波数変換できるのか教えてください。また今の所FFTを使おうとしているのですが、別に入力信号を周波数変換できればOK(周波数を上げたり下げたりしたい)なので、その方法があれば教えてください(><)

  • フーリエ変換と周波数

    フーリエ変換によって周波数を解析したのですが、負の周波数の値も出てきてしまいます。これは、共役な関係があることが関係しているのでしょうか。 また、一定周期で周波数が検出されるのですが、これはフーリエ変換が積分範囲を無限大にしていることが原因なのでしょうか。 宜しくお願いいたします。

専門家に質問してみよう