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);
![](https://i-blog.csdnimg.cn/blog_migrate/f65b37249015a78fd13128cbb8351f95.png)