你问的问题好像不是很明白
这道题就是要你在不同信噪比条件下求功率谱的,一种非参数化方法和一种参数化方法,并进行比较
不知道我这样理解对不对
给你两个程序
你参考下:
%% 经典功率谱估计
Fs=416.6667; %采样频率
window=boxcar(length(y)); %矩形窗
nfft=512;
[Pxx,f]=periodogram(y,window,nfft,Fs); %直接法
figure
plot(f,Pxx);
%% 间接法
% Fs=100; %采样频率
% nfft=416.6667;
% cxn=xcorr(y,'unbiased'); %计算序列的自相关函数
% CXk=fft(cxn,nfft);
% Pxx=abs(CXk);
% index=0:round(nfft/2-1);
% k=index*Fs/nfft;
% plot_Pxx=10*log10(Pxx(index+1));
% plot(k,plot_Pxx);
%% Bartlett法(改进方法一)
% Fs=100;
% nfft=416.6667;
% window=boxcar(256); %矩形窗
% noverlap=0; %数据无重叠
% p=0.9; %置信概率
% [Pxx,Pxxc]=psd(y,nfft,Fs,window,noverlap,p);
% index=0:round(nfft/2-1);
% k=index*Fs/nfft;
% plot_Pxx=(Pxx(index+1));
% plot_Pxxc=(Pxxc(index+1));
% figure(1)
% plot(k,plot_Pxx);
% pause;
% figure(2)
% plot(k,[plot_Pxx plot_Pxx-plot_Pxxc plot_Pxx+plot_Pxxc]);
%% 韦尔奇法
% Fs=100;
% nfft=416.6667;
% window=boxcar(100); %矩形窗
% window1=hamming(100); %海明窗
% window2=blackman(100); %blackman窗
% noverlap=20; %数据无重叠
% range='half'; %频率间隔为[0 Fs/2],只计算一半的频率
% [Pxx,f]=pwelch(y,window,noverlap,nfft,Fs,range);
% [Pxx1,f]=pwelch(y,window1,noverlap,nfft,Fs,range);
% [Pxx2,f]=pwelch(y,window2,noverlap,nfft,Fs,range);
% plot_Pxx=(Pxx);
% plot_Pxx1=(Pxx1);
% plot_Pxx2=(Pxx2);
%
% figure(1)
% plot(f,plot_Pxx);
%
% pause;
%
% figure(2)
% plot(f,plot_Pxx1);
%
% pause;
%
% figure(3)
% plot(f,plot_Pxx2); |