The frequency axis for the PSD of a signal

7 次查看(过去 30 天)
Suppose I have the signal x that contains N samples, and I take the FFT of this signal and rearrange the frequency components to have the 0 frequency componenet to the center
X = fftshift(fft(x));
and then calculate the PSD of the signal as
psd = (1/(fs*N))*abs(X).^2;
where fs is the sampling frequency, what is the exact frequency axis that corresponds to psd in this case? If I defined it as
freq = -fs/2:fs/N:fs/2;
it would be 1 element greater than the size of psd, but if I define it as
freq = -fs/2+fs/N:fs/N:fs/2;
it will be of the same size as psd.
Is the second definition accurate? If yes, why the negative frequencies don't extend to -fs/2 as it's the case for the positive frequencies?

回答(1 个)

Abhaya
Abhaya 2024-10-11
Hi Mawe,
I understand you want to find the frequency axis for the Power Spectral Density (PSD) of a signal, spanning from ‘-fs/2’ to ‘fs/2’.
The following line of the given code returns ‘N+1’ points, which includes both the endpoints.
freq = -fs/2:fs/N:fs/2
Also, the second definition in the code provides ‘N’ points but does not maintain zero symmetry.
freq = -fs/2+fs/N:fs/N:fs/2
To achieve all frequency bins symmetrically around zero, you can use the code given below:
freq = -fs/2 : fs/N : fs/2 - fs/N;
If you want to include both the endpoints in frequency vector, you can use ‘linspace’ function of MATLAB.
freq= linspace(-fs/2,fs/2,N);
For better understanding, please follow the MATLAB documentations given below.
Hope this solves your query.

类别

Help CenterFile Exchange 中查找有关 Parametric Spectral Estimation 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by