📄 mmse_diedai08.m
字号:
clear
clc
%波束形成的最佳权向量
%已知各信源的到达角度
%假设空间存在3个信号源,0为期望信号,1,2为干扰,各信号不相关;各信号功率相等
%采用8个阵元的线阵
sita0=50*pi/180;sita1=30*pi/180;sita2=70*pi/180; %各信号DOA
amp1=1;amp2=1;amp3=1; %各信号幅度
t1=pi*sin(sita1);
a_sita1=[1,exp(i*t1),exp(i*2*t1),exp(i*3*t1),exp(i*4*t1),...
exp(i*5*t1),exp(i*6*t1),exp(i*7*t1)].';
t0=pi*sin(sita0);
a_sita0=[1,exp(i*t0),exp(i*2*t0),exp(i*3*t0),exp(i*4*t0),...
exp(i*5*t0),exp(i*6*t0),exp(i*7*t0)].';
t2=pi*sin(sita2);
a_sita2=[1,exp(i*t2),exp(i*2*t2),exp(i*3*t2),exp(i*4*t2),...
exp(i*5*t2),exp(i*6*t2),exp(i*7*t2)].';
% 生成方向矩阵
N=900;
bit1=2*rem(unidrnd(2,1,N),2)-1;
bit2=2*rem(unidrnd(2,1,N),2)-1;
bit3=2*rem(unidrnd(2,1,N),2)-1;
%生成N比特的用户数据
SNRdB=7;%暂定一个信噪比
n0=1/(10^(SNRdB/10));
sigma=sqrt(n0);
for nn=1:N;
for mm=1:8;
xf(mm,nn)=amp1*exp(i*pi*(mm-1)*sin(sita0))+...
amp2*exp(i*pi*(mm-1)*sin(sita1))+...
amp3*exp(i*pi*(mm-1)*sin(sita2))+ sigma*randn(1); %16*1000
end;
end;
% 产生观测数据
Cxd=0;
for ri=1:N;
Cxd=Cxd+xf(:,ri)*xf(:,ri)';
end;
Rxd=Cxd/N; % 计算协方差矩阵 16*16
Cxx=0;
for ri1=1:N;
Cxx=Cxx+xf(:,ri1)*(bit1(ri1)); %16*1
end;
Rxx=Cxx/N;
% 计算协方差矩阵
iRxd=inv(Rxd);
Wopt=iRxd*Rxx;
%计算波束形成的最佳权向量
% Wopt=R^(-1)a(sitad)/[a'(sitad)*R^(-1)*a(sitad)]; 其中sitad为期望信号的DOA;
% '为哈密特转制
u=0.01;
angle=0.1:0.1:90; %在【0,90】范围内绘制波束图,步长为0.01度
for ii=1:5
for n=1:length(angle)
sita=(n-1)*pi/1800;
for l=1:8
xd(l)=amp1*bit1(N)*exp(i*pi*(l-1)*sin(sita))+...
amp2*bit1(N)*exp(i*pi*(l-1)*sin(sita))+...
amp3*bit1(N)*exp(i*pi*(l-1)*sin(sita))+ sigma*randn(1);
end
Xh=[xd(1),xd(2),xd(3),xd(4),xd(5),xd(6),xd(7),xd(8)]';
y1(n)=Wopt'*Xh;
y(n)=abs(Wopt'*Xh); %阵列输出
end
ymax=max(abs(y));
logy=20*log10(abs(y)/ymax); %归一化,转换为分贝表示
if ii==1|ii==5
figure(ii)
plot(angle,logy);
%axis([0 90 -70 0])
end
e=y1(n)-bit1(n);
Wopt=Wopt-u*xf(:,900)*e;
end
% 在直角坐标下绘制输出方向图
%非自适应的算法,计算量小,但是不能准确的将期望最大化干扰置零
%同时由于主瓣宽度的限制,干扰如果离主瓣很近则完全无法抑制
%改变步长对输出方向图没有影响,只是改变其精度
%改变求解自相关矩阵R的采样点数和SNR对性能的改变也不是很大
%增加阵元数可以有效的减小主瓣和旁瓣宽度,提高精确度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -