0

入力信号のフーリエ変換を計算する必要があるmatlabを使用して因子を見つけようとしています。問題は私にこのように述べられました:

fbin = 50HZ
0 <= n <= 1999
alpha = F {Blackman[2000] . cos[-2pi . fbin . n/2000]} (f)

where F is the Continous Time Fourier Transform operator.

私のMATLABコードは次のようになります。

blackman_v = blackman(2000);
signal_x = cos(-2 * pi() .* fbin * (0:(1999)) ./ 2000) .* blackman_v';
fft_real = abs(fft(signal_x, 2000));
alpha = fft_real(51); %51 is the bin for 50hz => or {(f * N/Fs)+1}==51

私の問題は、49hzで約412の値を取得することになっているのに、約250を取得することです(実際にいくつかの以前の結果を検証しています)。問題を間違って翻訳しましたか?私はかなり長い間戦ってきました、そして私はここで本当に何も悪いことを見ません。値は50Hz(430)で大丈夫だと思いました。

ヒントをいただければ幸いです。


編集

blackman_v = blackman(2000);
signal_x = cos(-2 * pi() .* fbin * (0:(1999)) ./ 2000) .* blackman_v';
alpha = abs(freqz(signal_x , 1, 2*pi*50/10000))

あなたは周波数が何であるか知っていますか?matlab docを読みましたが、まだ頭の中ではっきりしていません。

4

1 に答える 1

1

たぶん私はあなたの質問を誤解しましたが、Matlab は連続時間分析用ではありません。これは数値解析専用で、離散値を使用します。ただし、信号の離散時間フーリエ変換 (DFT) を計算することはできますが、その分解能は信号の長さに依存します。信号が非周期的であるため、ブラックマン ウィンドウを使用していますか?

Matlab で FFT (DFT) を計算する方法: http://www.mathworks.se/help/matlab/ref/fft.html

離散フーリエ変換は、信号が周期的であると仮定します。そうでない場合は、特定の周波数ピークがそのエネルギーを横に「漏らす」スペクトル漏れが発生し、周波数値がぼやけて定義されていないピークが生じます。したがって、時間領域信号は、好ましくは、DFT を計算する前に周期的にされます。一般的なパターンが繰り返される範囲で周期的です。ノイズは信号に固有である可能性があるため、値は周期間で正確である必要はありません。DFT を計算する前にウィンドウ関数を時間領域信号に適用すると、信号は周期的になりますが、振幅値が変化し、低周波数成分が導入されます。

于 2012-10-26T10:46:02.583 に答える