Question about PSD calculation using FFT
3 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
a short question about the calculation of the PSD using the FFT. I used the example code provided:
rng default
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t) + randn(size(t));
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
I understand each step except this one:
psdx(2:end-1) = 2*psdx(2:end-1);
Why do we double entry except the first and the last? Is it about the symmetry of the FFT?
Thanks ahead and best regards, Chris
1 个评论
Francesca
2022-10-18
Hi, i'm working on a similar work: can I ask you what this part means: PSDx = (1/(Fs*N)) * abs(DFTx).^2?
采纳的回答
Jeremy
2016-6-14
The fft results in a spectra that includes positive and negative frequencies. Don't ask me to explain what a negative frequency really means but the negative frequency esults are just the conjugates of the positive frequency results. They are not needed for the PSD calculation which is why they are rmeoved by the following line:
xdft = xdft(1:N/2+1);
You have to account for the enrgy lost when this portion of the spectra is removed so we multiply the rest by 2. The 0Hz and Nyquist frequency results don't have an imaginary portion and are not included in the negative frequency portion so they are not muiltiplied by 2.
2 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!