Matlab代码:
%FFT 获得功率频谱密度估计
N = length(signalData.sampleVolt);
xdft = fft(signalData.sampleVolt);
xdft = xdft(1:N/2+1);
psdx = (1/(signalData.fs*N)) * abs(xdft).^2;
% psdx = (1/(N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:signalData.fs/N:signalData.fs/2;
figure(1)
% plot(freq,10*log10(psdx),'g')
hold on
功率谱表示为
Pw=abs(fft(x)).^2/N(不靠谱,应该是代表总能量的,不能是单个频率点的)
而功率谱密度表示为
psd = abs(fft(x)).^2/length(x)/fs;
%periodogram 获得功率频谱密度估计
window=boxcar(length(signalData.sampleVolt)); %矩形窗
nfft=1024;
[psd,fpsdHz]=periodogram(signalData.sampleVolt,window,nfft,signalData.fs); %直接法
% plot(fpsdHz,10*log10(psd),'r');
hold on
%自相关函数
nfft=1024;
cxn=xcorr(signalData.sampleVolt,'unbiased'); %计算序列的自相