基于奇异值分解的MVDR方法进行信号频率

MVDR也叫做最小方差无失真响应。它的思想方法是基于FIR滤波器,由输入随机过程计算出输出向量的平均功率,并考虑无失真,写出代价函数。

  • 假设某频率复正弦信号通过,即需要满足   
  • 让输出平均功率最小,达到抑制其他频率信号和噪声的目的
  • 于是代价函数为:         

                                                                    

  • 这里奇异值分解就是来求矩阵的逆。
clc,clear all,close all
M=4;N=1000;f=[0.1,0.25 0.27];
SNR=[30 30 27];sigma=1;
Am=sqrt(2*sigma^2*10.^(SNR/10));
t=linspace(0,1,N);
phi=2*pi*rand(size(f)); %随机相位
vn=sqrt(sigma/2)*randn(size(t))+1i*sqrt(sigma/2)*randn(size(t)); %加性高斯白噪
声
Un=vn;
for k=1:length(f)
s=Am(k)*exp(1i*2*pi*N*f(k).*t+1i*phi(k));
Un=Un+s;
end
Un=Un.';
A=zeros(M,N-M+1);
for n=1:N-M+1
A(:,n)=Un(M+n-1:-1:n);
end
[U,S,V]=svd(A');
invphi=V*inv(S'*S)*V';
P=1024;f=linspace(-0.5,0.5,P);
omega=2*pi*f;
a=zeros(M,P);
for k=1:P
for m=1:M
a(m,k)=exp(-1i*omega(k)*(m-1));
end
end
%% MVDR 谱
Pmvdr=zeros(size(omega));
for k=1:P
Pmvdr(k)=1/(a(:,k)'*invphi*a(:,k));
end
Pmvdr=abs(Pmvdr/max(abs(Pmvdr)));%归一化
Pmvdr=10*log10(Pmvdr);figure;
figure,plot(f,Pmvdr);
                                                        


  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值