|
自相关函数DFT计算
这里关键是离散时, 间接法如何计算自相关函数和功率谱是一对Fourier变换.
如楼主程序中,取xn=1024点,直接FFT得功率谱是1024点(为直观,简单,取Fs=nfft=1024;)
xn自相关后是2047点,但楼主程序中对其作1024点FFT,得功率谱1024点. (即取Xn的前1024点), 问题是自相关后是2047点,什么得1024谱线?
一般数据DFT中的n=0:N-1; 在计算自相关函数DFT时, n=-N+1:N-1, 这样2047个样点得谱线是1024个.
下面的程序用直接法和间接法结果相同了, 为简单,取Fs=N=1024;直接法fft后计功率谱,
close all;clc;clear all;
Fs=1024; %采样频率
n=0:1/Fs:1-1/Fs;
%产生含有噪声的序列
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
Pxx=fft(xn).*conj(fft(xn));%直接法
plot(10*log10(Pxx),'b');
hold
Fs=1024; %采样频率
n=0:1/Fs:1-1/Fs;
%产生含有噪声的序列
xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
cxn=xcorr(xn);%计算序列的自相关函数
cxn=cxn(nfft:end)+[0 cxn(1:nfft-1)];
CXk=fft(cxn,nfft);
Pxx=abs(CXk);
plot_Pxx=10*log10(Pxx);
plot(plot_Pxx,'r');
图中 直接法功率谱(兰) 间接法功率谱(红)
[ 本帖最后由 zhwang554 于 2008-7-11 19:47 编辑 ] |
|