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

📄 sa_ex8_10.m

📁 这个是英文版<<Smart Antennas for Wireless Communications>>配套的matlab源程序
💻 M
字号:
% CMA example 8.10

n=50;    % total number of iterations


mu = .5;
d = .5;  % element spacing in terms of wavelength d = lambda/2
N=8;
Nchips = 32;
nsamples = 4;
T = 32/3E6;
tau = T/Nchips;
num = Nchips*nsamples;
t=(1:num+4)*T*1E6/num;

randn('state',0)
btemp=sign(randn(1,Nchips));
b=[];
for i=1:length(btemp),
	b = [b,btemp(i)*ones(1,nsamples)];
end
a1=[b 0 0 0 0];
a2=.3*[0 0 b 0 0];
a3=.1*[0 0 0 0 b];



tt=t(1:132);

figure;
subplot(221)
plot(tt,a1,'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])
subplot(222)
plot(tt,a2,'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])
subplot(223)
plot(tt,a3,'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])
subplot(224)
plot(tt,a1+a2+a3,'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])

%----- Desired Signal & Interferer definition-----%

S=a1;
thetaS=45;  % desired signal angle
thetaS = thetaS*pi/180; 
I1=a2;
theta1 = -30;   % interference angle
theta1 = theta1*pi/180;
I2=a3;
theta2 = 0;   % interference angle
theta2 = theta2*pi/180;

ii=1:N;
%-----Calculate Array Steering Vectors ----------

vS=exp(1j*(ii-1)*2*pi*d*sin(thetaS));
v1=exp(1j*(ii-1)*2*pi*d*sin(theta1));
v2=exp(1j*(ii-1)*2*pi*d*sin(theta2));
x=(vS.'*S+v1.'*I1+v2.'*I2);	%array input without noise
w=zeros(N,n);			% initialize weights
w(1,1) = 1;
%y(1)=0;
for k=1:n
    y(k)=w(:,k)'*x(:,k);
  w(:,k+1)=w(:,k)+2*mu*(1-1/abs(y(k)))*y(k)*conj(x(:,k));    
 end
ww=w(:,n);
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 + (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

out=ww.'*x;
figure;
subplot(211)
plot(tt,a1+a2+a3,'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])
title('Arriving signal')
subplot(212)
plot(tt,real(out/8),'k')
xlabel('t')
ylabel('amplitude')
axis([ 0 max(tt) -1.5 1.5])
title('CM output signal')

⌨️ 快捷键说明

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