⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sa_ex8_9.m

📁 Smart antennas for wireless communication - With MATLAB (Gross F.B. - 2005 - McGraw-Hill)
💻 M
字号:
%%%%%%%%%%%%%%%%%%%
%% Smart antenna ex 8.9 RLS Algorithm %%
%%%%%%%%%%%%%%%%%%%

%----- Givens -----%
K=50;    % total number of data samples
alpha=.9;
sig2=.01;
d = .5;  % element spacing in terms of wavelength d = lambda/2

N=8;
thetaS=30;  % desired signal angle
thetaI = -60;   % interference angle
%----- Desired Signal & Interferer definition-----%
T=1E-3;
t=(0:(K-1))*T/(K-1);
S=cos(2*pi*t/T);
thetaS = thetaS*pi/180;     
I=sin(pi*t/T);
thetaI = thetaI*pi/180;     
n=randn(N,K)*sqrt(sig2);            % calculate noise in each array input
Rnn=n*n'/K;
%----- Create steering vectors for each user's signal for linear array -----%
vS = []; vI = [];
i=1:N;
vS=exp(1j*(i-1)*2*pi*d*sin(thetaS));
vI=exp(1j*(i-1)*2*pi*d*sin(thetaI));

%----- Solve for Weights using RLS -----%

x=(vS.'*S+vI.'*I);	%array input without noise
w=zeros(N,K);			% initialize weights to 0
Rxx=x(:,1)*x(:,1)'+Rnn;		% calculate initial correlation matrix
Rinv=inv(Rxx);
alinv=1/alpha;
for jj=2:K
    Rxx=alpha*Rxx+x(:,jj)*x(:,jj)';
    Rinv=alinv*Rinv-alinv^2*Rinv*x(:,jj)*x(:,jj)'*Rinv./(1+alinv*x(:,jj)'*Rinv*x(:,jj));
    g=Rinv*x(:,jj);
    w(:,jj)=w(:,jj-1)+g*[S(jj)-x(:,jj)'*w(:,jj-1)];
 end
 for jj=1:N
     figure(1)
    plot(1:K,abs(w(jj,:)),'k')
    hold on
    figure(2)
     plot(1:K,unwrap(angle(w(jj,:))),'k')
     hold on
 end
 hold off
 %----- Plot Results -----%
ww=w(:,K);
ww=ww/abs(ww(1));
theta = -pi/2:.01:pi/2;
AF = zeros(1,length(theta));
% Determine the array factor for linear array
for i = 1:N
    AF = AF + conj(ww(i))*exp(j*(i-1)*2*pi*d*sin(theta));
end
figure;
plot(theta*180/pi,abs(AF)/max(abs(AF)),'k')
xlabel('AOA (deg)')
ylabel('|AF_n|')
axis([-90 90 0 1.1])
set(gca,'xtick',[-90 -60 -30 0 30 60 90])
grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -