Music算法仿真

Music:利用信号子空间和噪声子空间的正交性,构造空间谱函数,通过谱峰搜索,估计信号频率。这里的谱峰也称为“伪谱”,或MUSIC谱。

以下列信号为例  

  • 产负高斯白噪声序列和带噪声的信号样本

N=1000;
noise=(rand(1,N)+j*rand(1,N))/sqrt(2);
u(n)=exp(1i*0.5*pi*(0:N-1)+1i*2*pi*rand)+exp(-1i*0.3*pi*(0:N-1)+1i*2*pi*rand)+noise;

  • 计算自相关矩阵
M=8;%自相关矩阵的阶数
for k=1:N-M
   xs(:,k)=un(k+M-1:-1:k).';
end
R=xs*xs'/(N-M);
  • 计算伪谱(考虑到要画点,就要记录每次P的离散值,因此w的范围用n来表示,下面用NF个采样点表示)
NF=2048;
for n=1:NF
    aw=exp(-1i*2*pi*((n-1)/(NF-1)-0.5)*(0:M-1)');
    P(n)=1/(aw'*G*G'*aw);
    f(n)=((n-1)/(NF-1)-0.5);
end
maxx=max(P);
figure,plot(-f,10*log10((P+eps)/maxx));
xlabel('频率f');ylabel('归一化功率谱/dB')  

注意这里绘图时f要取负号,因为当最后个点n=NF时,(n-1)/(NF-1)-0.5 相当于f=-0.5,但是我们画的坐标轴f=-0.5在x轴最左边,因此要取个符号。

   


猜你喜欢

转载自blog.csdn.net/ai136172022/article/details/79833782