📄 rls.m
字号:
clear,clc
m=8; % sensors
n=2; % sources
theta=[-20 0]; % in angle
d=1/2; % 1/2 lambada
N=200; % samples
L=100; % resolution in [-90' 90']
Meann=0; % mean of noise
varn=1; % variance of noise
SNR=10;
INR=10;
rvar1=sqrt(varn) * 10^(SNR/20); % variance of signal
rvar2=sqrt(varn) * 10^(INR/20); % variance of interference
% generate the source signals
s=[rvar1*exp(j*2*pi*50*0.001*[0:N-1])
rvar2*exp(j*2*pi*(100*0.001*[0:N-1]+rand))];
% generate the A matrix
A=exp(-j*2*pi*d*[0:m-1].'*sin(theta*pi/180));
% generate the noise component
e=sqrt(varn/2)*(randn(m,N)+j*randn(m,N));
% generate the ULA data
Y=A*s+e;
% initialize weight matrix and associated parameters for RLS predictor
de=s(1,:);
w = zeros(m, 1);
lambda=0.75;
delta=1e-2;
P=1/delta*eye(m);
for k = 1:N
v=P*Y(:,k);
u=1/lambda*v/(1+1/lambda*Y(:,k)'*v);
e(k)=de(k)-w'*Y(:,k);
w=w+u*conj(e(k));
P=1/lambda*(eye(m)-u*Y(:,k)')*P;
end
% beamforming using the RLS method
beam=zeros(1,L);
for i = 1 : L
a=exp(-j*2*pi*d*[0:m-1].'*sin(-pi/2 + pi*(i-1)/L));
beam(i)=20*log10(abs(w'*a));
end
% plotting command followed
figure
angle=-90:180/L:(90-180/L);
plot(angle,beam);
xlabel('angle');
ylabel('幅度响应/dB');
figure
for k = 1:N
en(k)=(abs(e(k))).^2;
end
semilogy(en);
xlabel('n');
ylabel('e^{2}(n)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -