1.程序功能描述
基于自适应波束成形算法的matlab性能仿真,对比SG和RLS两种方法.
2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
3.核心程序
for ii = 1:MTKL if SEL == 1 for i = 1:length(r) r_(:,i) = SD'*r(:,i); A_ = SD'*a; %xx : x* x_(i) = W_'*r_(:,i); xx(i) = conj(x_(i)); %开始迭代 if i == 1 W_ = SD'*(inv(R)*a*inv((a'*inv(R)*a))*e); SD = SD - mu1*xx(i)*(r(:,i)*W_' - inv(a' *a )*(a*W_')*(a'*r(:,i))); else SD = SD - mu1*xx(i)*(r(:,i)*W_' - inv(a' *a )*(a*W_')*(a'*r(:,i))); W_ = W_ - mu2*xx(i)*(eye(D) - inv(A_'*A_)*A_*A_') *r_(:,i); end rx = corrmtx(a*Sig_train(:,i),M-1); RS = rx'*rx; rx = corrmtx(a*Sig_train(:,i),M-1); ry = corrmtx(a*Sig_train(:,i)+Noise_train(:,i),M-1); RI = rx'*ry; end SINR(D) = abs((W_'*SD'*RS*SD*W_)/(W_'*SD'*RI*SD*W_)); end %************************************************************************** %RLS*********************************************************************** if SEL == 2 alpha = 1; P = zeros(M,M); P_ = zeros(D,M); for i = 1:length(r) r_(:,i) = SD'*r(:,i); Pdelay = P; P = inv(R); A_ = SD'*a; P_delay = P_; P_ = SD'*P; SD = (P*a*A_')/(a'*P*a); W_ = (P_*a)/(A_'*P_*a); k = alpha*Pdelay*r(:,i)/(1+alpha*r(:,i)'*Pdelay*r(:,i)); P = alpha*Pdelay-alpha*k*r(:,i)'*Pdelay; rx = corrmtx(a*Sig_train(:,i),31); RI = rx'*rx; rx = corrmtx(a*Sig_train(:,i),31); ry = corrmtx(a*Sig_train(:,i)+Noise_train(:,i),31); RS = rx'*ry; end SINR(D) = abs((W_'*SD'*RI*SD*W_)/(W_'*SD'*RS*SD*W_)); end end SINRs(:,ii) = SINR; end DD = D3(4:end); SINRS2 = 20*log10(mean(SINRs(4:end,:),2)); figure; plot(DD,SINRS2,'b-o'); grid on; xlabel('Rank') ylabel('SINR'); 27_008m
4.本算法原理
自适应波束成形是阵列信号处理中的关键技术,用于在空间上选择性地增强期望信号并抑制干扰信号。在多种自适应波束成形算法中,随机梯度(Stochastic Gradient,SG)算法和递归最小二乘(Recursive Least Squares,RLS)算法是两种常用的方法。
RLS的基本流程如下所示:
SG的基本流程如下所示:
标签:end,inv,rx,train,matlab,SG,RLS,SD From: https://www.cnblogs.com/softcodes/p/18279049