2016-12-20 3 views
1

私はmatlabソフトウェアを使用しています。私の質問に。 私はSTFTを適用しているオーディオ信号を持っています。私はy(audio signal)から (46 ms, specifially chosen)の部分を取り、FFTを使っています。それから私はオーディオ信号の終わりまで次のセグメントに行きます。定義された周波数帯でfftビンの数をすべて取得するにはどうすればよいですか?

マイWAVファイルの長さは10.8526秒です。 44100Hzのサンプル周波数を使用している場合は、y10.8526*fs = 478599.66であり、 が478 6000 x2 doubleと表示されています。

私のfftの長さは2048です。私の信号は、より低い周波数帯域[0 300]mfb [301 5000]およびhfb [5001 22050(fs/2)]の下で区別されます。

バンドは単なる例であり、実際のmatlabコードではありません。 Basicall私が望むもの(または私がやろうとしていること)は、定義された周波数帯で私のビンの値を取得し、その上で算術平均を行うことです。

fftの長さ、またはfftとほぼ同じ長さにしたいので、46 msを選択しました。 (It is not exact).Afterwards、私はそれをプロットしようとしたいが、それは今は重要ではない。どんな助けもありがとうございます。

答えて

0

サイズnのベクトルにおける時間領域の信号のフーリエ変換は、同じ信号のサイズnの別のベクトルを周波数領域で返します。

周波数ドメインはサンプリング周波数まで0(DCオフセット)になります。しかし、あなたはその半分しか使うことができません。後半は同じ値を持ちますが、ミラーリングされます。

あなたはで各便利なビンの中心周波数を得ることができます。

f = Fs*(0:(n/2))/n; 
+0

まず、感謝に答えるために。変数 "n"は何を表しているのかよく分かりません。私は知っている、どのようにfftはちょっと働くが、私はそれに取り組んでみるだろう。残念ながら、matlabプログラミングの知識は限られています –

+0

"n"はあなたのfftの長さです。あなたの場合2048 –

関連する問題