aa2007 发表于 2011-5-4 16:36

matlab证明维纳辛钦公式——自相关函数和功率谱密度成府里叶变换

      matlab证明维纳辛钦公式——自相关函数和功率谱密度成府里叶变换?

   我在做的时候,本是想先求原信号的自相关函数用xcorr函数求,再傅里叶变换得功率谱密度。得图一
    然后由PSD函数得功率谱密度,得图二。
    对比图一图二,图形不一样。

   我迷茫了。那位好心人士能帮忙解释一下,谢谢了

aa2007 发表于 2011-5-4 16:39

此为由自相关函数求功率谱密度
clear all;
N=1024;
n=;
Fs=500;
t=n/Fs;
Mlag=100;
% Generate noise
x1=randn(1,length(t));
figure(1);plot(t,x1);
xlabel('n'); ylabel('x1(n)');
title('白噪声');
grid on;
% Computing the unbiased atuocorretaion of x1
=xcorr(x1,Mlag,'unbiased');
figure(2); plot(lags/Fs,r1);
xlabel('n'); ylabel('Rx1(n)');
title('白噪声的自相关函数');
grid on;
% Generate signal plus noise
x2=sin(2*pi*10*t)+0.7*randn(1,length(t));
figure(3);plot(t,x2);
xlabel('n'); ylabel('x2(n)');
title('正弦函数+白噪声');
grid on;
% Computing the unbiased atuocorretaion of x2
=xcorr(x2,Mlag,'unbiased');
figure(4); plot(lags/Fs,r2);
xlabel('n'); ylabel('Rx2(n)');
title('正弦函数+白噪声的自相关函数');
grid on;


Pw1=fft(r2);
Pw=abs(Pw1);
f=(0:length(Pw1)-1)*Fs/length(Pw);
figure(5);
plot(f,Pw);
xlabel('n'); ylabel('r2(n)');
title('正弦函数+白噪声的功率谱密度');
grid on;

aa2007 发表于 2011-5-4 16:40

此为PSD函数所得功率谱密度
clear all;
% Generate the signal with noise and display
N=1024;
n=;
Fs=500;
t=n/Fs;
Mlag=100;
% Generate noise
wn=randn(1,length(t));
xn=sin(2*pi*10*n)+0.7*wn;
figure(1);
plot(t,xn); xlabel('n');
grid;
title(' 原函数');
% Estimate the PSD
window=boxcar(N/8);
=psd(xn,1024,1000,window,0,0.9);
f=(0:length(Pxx)-1)/length(Pxx);
plot_Pxx=10*log10(abs(Pxx));
figure(2);
plot(f,plot_Pxx);
xlabel('Frequency'),
ylabel('Power Spectrum (dB)');
title('功率谱');
grid ;
%Estimate the PSD with 90% confidence interval
figure(3);
plot(f,10*log10(Pxx-Pxxc(:,1)), f,10*log10(Pxx+Pxxc(:,1)));
xlabel('Frequency(Hz)');
ylabel('Power Spectrum(dB)');
title('PSD with 90% confidence interval');
grid;

aa2007 发表于 2011-5-4 16:41

两个程序是独立编程的,我没把它们放到一块儿
页: [1]
查看完整版本: matlab证明维纳辛钦公式——自相关函数和功率谱密度成府里叶变换