5

私の最後の質問に関連するいくつかの質問をしたいので、別のスレッドに投稿したくありません。私の質問にはコードが含まれているため、コメントとして投稿することはできません。そのため、古い質問を新しい質問に編集する必要があります。見て、助けてください。ありがとうございました。

私はFFTとDSPを初めて使用しますが、MatlabでのFFTの計算についていくつか質問したいと思います。次のコードはMatlabヘルプからのもので、ノイズを削除しました。

  1. NFFTとは異なる信号Lの長さを選択できますか?

  2. ウィンドウを正しく使用したかどうかわかりません。しかし、ウィンドウを使用すると(次のコードでハニング)、振幅の正確な値を取得できませんか?

  3. LとNFFTが異なる値を取得すると、振幅の値も異なります。入力信号の振幅の正確な値を取得するにはどうすればよいですか?(次のコードでは、既知の信号を使用してコードが正しく機能するかどうかを確認しました。しかし、センサーから信号を取得し、その振幅がわからない場合は、どうすれば確認できますか?)

どうもありがとうございました。ご連絡をお待ちしております:)

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 512;                     % Length of signal
NFFT=1024;                   % number of fft points
t = (0:L-1)*T;                % Time vector
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);    input signal
X = fft(hann(L).*x', NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(X(1:NFFT/2+1)))     % Plot single-sided amplitude spectrum.
4

2 に答える 2

2

L入力信号のサンプル数です。その場合L < NFFT、差はゼロで埋められます。

FFTに対するゼロパディングの影響について読んでおくことをお勧めします。通常L = NFFT、これを使用するとデータを最適に表現できるため、使用するのが最適です。

ゼロパディングとFFTの使用に関する例外的な回答は、ここにあります: https ://dsp.stackexchange.com/questions/741/why-should-i-zero-pad-a-signal-before-taking-the-フーリエ変換

あなたの実験では、それぞれ異なるスペクトル漏れの量が異なるため、異なる振幅が見られますL

于 2012-08-20T16:07:45.220 に答える
1

サンプリングウィンドウ内の周期数が非整数である周波数成分で一貫した結果を得るには、FFTの前にウィンドウ関数を適用する必要があります。

FFTを直接使用する代わりに、ピリオドグラムの使用を検討することもできます。これにより、ウィンドウ関数やその他の多くのハウスキーピングが処理されます。

于 2012-08-20T16:06:28.070 に答える