FFT的功率谱密度

时间:2014-07-27 18:10:22

标签: matlab audio signal-processing fft

我有一段代码可以获取部分信号的FFT,而我现在正试图获取PSD,

Fs = 44100; 
cj = sqrt(-1);
 %T=.6; 
dt = 1/Fs; 
left=test(:,1);
 right=test(:,2); 
time = 45; 
interval =.636;
 w_range = time*Fs: (time+interval)*Fs-1;
 I = left(w_range);
 Q = right(w_range); 
n = interval * Fs; 
f = -Fs/2:Fs/n:Fs/2-Fs/n;

s = I+cj.*Q;

% Smooth the signal ss = smooth(s,201);

sf = (fftshift(fft(ss(1:n)))); %FFT of signal

figure(1) plot(f,((20*log10((abs(sf))./max(abs(sf))))))

根据我的理解,为了获得PSD,我只需要将sf提升到2的幂,或者还有什么我需要执行的?

2 个答案:

答案 0 :(得分:1)

技术上是,您可以通过取其FFT的平方幅度来获得周期信号的功率谱密度(PSD)。请注意,如果您要以对数分贝标度绘制它,20*log10(abs(sf))10*log10(abs(sf).^2)之间确实没有区别。

然而,在某种意义上,通常存在更多的情况,即以这种方式计算的PSD估计倾向于具有相当大的方差。有许多techniques可用于改进估算。一个简单的方法是将window应用于数据部分,执行FFT,然后对得到的PSD进行平均(即对平方幅度求平均值)。

答案 1 :(得分:0)

你是完全正确的。你只需构建绝对值的平方。