数字信号处理之经典谱估计与现代谱估计
2019-07-13 19:13发布
生成海报
%1、直接法:
clc;clear all;
u = wgn(1,2000,0); %产生高斯白噪声信号样本点2000个
b = [1 1 0.24];
a = [1 -1.5 0.56]; %滤波器系数
xn = filter(b,a,u) % u通过滤波器的输出xn
N = 1000;
xn = xn(1,1:N); %取x的1000个样本点分析
nfft=1024; %取1024点fft运算
Perw=abs(fft(xn,nfft)).^2/N; %按公式先计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N
t=0:round(nfft/2-1);
f=t*N/nfft;
Perw_1=10*log10(Perw(t+1));
figure;
plot(f,Perw_1);
title('直接法功率谱');
xlabel('频率/Hz');
ylabel('功率谱密度');
Mean_Perw = mean(Perw_1);
Var_Perw= std(Perw_1);
disp(['Perw的均值为:' ,num2str(Mean_Perw)]);
disp(['Perw的方差为:' ,num2str(Var_Perw)]);
%2、间接法:
i = 0;
gn = xn;
for M =600:200:1000 %M分别取600 800 1000
i = i+1;
xn = gn(1,1:M);
cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数
CXk=fft(cxn,nfft);
Pbt=abs(CXk);
index=0:round(nfft/2-1);
k=index*M/nfft;
figure;
plot(k,10*log10(Pbt(index+1)));
title(['间接法(自相关函数法)功率谱','M=',num2str(M)]);
xlabel('频率/Hz');
ylabel('功率谱密度');
Mean_Pbtw = mean(10*log10(Pbt(index+1)));
Var_Pbtw= std(10*log10(Pbt(index+1)));
disp(['Pbtw',num2str(i),'的均值为:' ,num2str(Mean_Pbtw)]);
disp(['Pbtw',num2str(i),'的方差为:' ,num2str(Var_Pbtw)]);
end
%3、AR现代谱估计法:
clc;clear all;
u = wgn(1,2000,0); %产生高斯白噪声信号样本点2000个
b = [1 1 0.24];
a = [1 -1.5 0.56]; %滤波器系数
xn = filter(b,a,u) % u通过滤波器的输出xn
N = 1000; %N同时也表示采样率
xn = xn(1,1:N); %取x的1000个样本点分析
Nfft=1024; %取1024点fft运算
ORDER = 5;
[Pxx,W] = pyulear(xn,ORDER,Nfft);
t=0:round(Nfft/2-1);
f=t*N/Nfft;
Pxx_1 = 10*log10(Pxx(t+1));
plot(f,Pxx_1);
title('AR模型法功率谱');
xlabel('频率/Hz');
ylabel('功率谱密度');
Mean_Pxx = mean(Pxx_1);
Var_Pxx= std(Pxx_1);
disp(['Perw的均值为:' ,num2str(Mean_Pxx)]);
disp(['Perw的方差为:' ,num2str(Var_Pxx)]);
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮