LCMV和最大信噪比 MSINR 能直接运行的良心程序 阵列信号处理

我嘞个亲娘,太难了

LCMV

clc; 
close all
clear all; 
J=8;%传感器的个数
j=sqrt(-1);
r=1/2;%避免空间采样重叠设置传感器间隔与波长的比值为0.5
sita=-90:0.5:90;%设置角度范围
sita1=0;%设置信号入射角
sita2=[-30 30];%设置干扰入射角
N=500;%设置采样点数
s=exp(j*2*pi*(16000*(0:1:N-1)/200)) ;%构造有用信号(正弦信号)
noise=(randn(J,N)+j*randn(J,N))/sqrt(2);%噪声分量
a1=sqrt(10)*exp(-j*pi*(0:J-1)'*sin(sita1/180*pi));
a2=sqrt(10)*exp(-j*pi*(0:J-1)'*sin(sita2/180*pi));
xi=(randn(2,N)+j*randn(2,N))/sqrt(2);%干扰
X=a1*s+a2*xi+noise;%含噪声的接收到的信号
Rx=X*X'/N;
C=a1;
%F=1;
w=inv(Rx)*C*inv(C'*inv(Rx)*C);
for n=1:length(sita)
a=exp(-j*2*pi*r*sin(sita(n)*pi/180)*(0:J-1)');%导向矢量
p(n)=w'*a;%天线方向图
end
P=20*log10(abs(p)/max(abs(p)));%换算成dB
plot(sita,P);
grid on;
xlabel('sita/度');
ylabel('P / dB');
title('lcmv方向图');

最大信噪比 MSINR

clc; 
close all
clear all; 
J=10;%传感器的个数
j=sqrt(-1);
r=1/2;%避免空间采样重叠设置传感器间隔与波长的比值为0.5
sita=[-90:0.5:90];%设置角度范围
sita1=20;%设置信号入射角
sita2=[-40 40];%设置干扰入射角
N=500;%设置采样点数
s=exp(j*2*pi*(16000*[0:1:N-1]/200)) ;%有用信号(正弦信号)
noise=(randn(J,N)+j*randn(J,N))/sqrt(2);%噪声
a1=sqrt(10)*exp(-j*pi*[0:J-1]'*sin(sita1/180*pi)); % a1 是列向量 10 * 1

xs=a1;
Rs=xs*xs'/N;%信号的自相关矩阵  
Rn=noise*noise'/N;%噪声的自相关矩阵
[V,D] = eig(Rs,Rn);%(Rs,Rn)的广义特征值构成的对角阵D和特征向量构成的矩阵V
[D,ind] = sort(diag(D));%取出D的对角线元素并按照从小到大次序排列,ind为原矩阵D的变动索引
w=V(:,ind(10));%最优权值w为(Rs,Rn)的最大广义特征值所对应的特征向量  10*1列向量
for n=1:length(sita)
    a=exp(-j*2*pi*r*sin(sita(n)*pi/180)*[0:J-1]');%导向矢量 10*1列向量
    p(n)=w'*a;%天线方向图 列向量
end
P=20*log10(abs(p)/max(abs(p)));%换算成dB
plot(sita,P);
grid on;
xlabel('sita/度');
ylabel('P / dB');
title('最大信噪比方向图');

还需要其他资源请下载,都能直接运行:

おすすめ

転載: blog.csdn.net/innovationy/article/details/121465426