当前位置:文档之家› (完整版)波束形成-Matlab程序

(完整版)波束形成-Matlab程序

(完整版)波束形成-Matlab程序
(完整版)波束形成-Matlab程序

1.均匀线阵方向图

%8阵元均匀线阵方向图,来波方向为0度

clc;

clear all;

close all;

imag=sqrt(-1);

element_num=8;%阵元数为8

d_lamda=1/2;%阵元间距d与波长lamda的关系

theta=linspace(-pi/2,pi/2,200);

theta0=45/180*pi;%来波方向(我觉得应该是天线阵的指向)

%theta0=0;%来波方向

w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]');

for j=1:length(theta) %(我认为是入射角度,即来波方向,计算阵列流形矩阵A) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]');

p(j)=w'*a; %(matlab中的'默认为共轭转置,如果要计算转置为w.'*a)

end

figure;

plot(theta,abs(p)),grid on

xlabel('theta/radian')

ylabel('amplitude')

title('8阵元均匀线阵方向图')

见张小飞的书《阵列信号处理的理论和应用2.3.4节阵列的方向图》

当来波方向为45度时,仿真图如下:

8阵元均匀线阵方向图如下,来波方向为0度,20log(dB)

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下:

2.波束宽度与波达方向及阵元数的关系clc

clear all

close all

ima=sqrt(-1);

element_num1=16; %阵元数

element_num2=128;

element_num3=1024;

lamda=; %波长为0.03米

d=1/2*lamda; %阵元间距与波长的关系

theta=0::90;

for j=1:length(theta);

fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d));

psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d));

beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d)); end

figure;

plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid on

xlabel('theta');

ylabel('Width in radians')

title('波束宽度与波达方向及阵元数的关系')

仿真图如下:

3.当阵元间距

/2

>时,会出现栅瓣,导致空间模糊。仿真图如下:

4.类似于时域滤波,天线方向图是最优权的傅立叶变换仿真程序和仿真图如下:

clc

clear all

close all

ima=sqrt(-1);

element_num=32; %阵元数

source_num=1; %信源数

d_lamda=1/2; %阵元间距与波长的关系

theta=linspace(-pi/2,pi/2,200);

theta0=0; %来波方向(ayy应该是阵列指向方向)

w=exp(ima*2*pi*d_lamda*sin(theta0)*[0:element_num-1]');

for j=1:length(theta);

a=exp(ima*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]');

p(j)=w'*a;

end

figure;

subplot(1,2,1)

plot(theta,abs(p)),grid on

xlabel('theta/radian')

ylabel('amplitude')

title('按定义的方向图')

pfft=fftshift(fft(w,128));

subplot(1,2,2)

plot(linspace(-pi/2,pi/2,128),abs(pfft)),grid on

xlabel('theta/radian')

ylabel('FFT_amplitude')

title('最优权的傅里叶变换')

5.%最大信噪比准则方向图和功率谱clc;

clear all;

close all;

ima=sqrt(-1);

element_num=8; %阵元数为8 d_lamda=1/2; %间距为半波长theta=-90::90; %范围

theta0=0; %来波方向theta1=20; %干扰方向

L=512; %采样单元数for i=1:L

amp0=10*randn(1);

amp1=200*randn(1);

ampn=1;

s(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]');

j(:,i)=amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]');

n(:,i)=ampn*(randn(element_num,1)+ima*randn(element_num,1));

end

Rs=1/L*s*s'; %信号自相关矩阵

Rnj=1/L*(j*j'+n*n'); %干扰+噪声的自相关矩阵

[V,D]=eig(Rs,Rnj); %(Rs,Rnj)的广义特征值和特征向量

[D,I]=sort(diag(D)); %排序

Wopt=V(:,I(8)); %最优权矢量

for j=1:length(theta)

a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');

f(j)=Wopt'*a;

p(j)=a'*Rs*a+a'*Rnj*a;

end

F=20*log10(abs(f)/max(max(abs(f))));

P=20*log10(abs(p)/max(max(abs(p))));

subplot(121)

plot(theta,F);grid on;hold on

plot(theta0,-50:0,'.');plot(theta1,-50:0,'.')

xlabel('theta/0');ylabel('F in dB');

title('max-SNR 方向图');

axis([-90 90 -50 0]);

hold on

subplot(122)

plot(theta,P,'r');grid on

xlabel('theta/0');ylabel('功率in dB');

title('max-SNR功率谱')

仿真图如下:

6.%ASC旁瓣相消----MSE准则

clc;close all;clear all

ima=sqrt(-1);

M=32; %辅助天线的数目d_lamda=.5;

theta0=-30; %来波方向

theta1=60; %干扰方向

L=512; %采样单元数

s=zeros(1,512); %预划分一个区域

for ii=1:L;

amp0=1*randn(1); %信号的幅度随机产生,保证信号之间是不相关的

amp1=200*randn(1);

ampn=1;

jam(:,ii)=amp1*exp(ima*2*pi**sin(theta1*pi/180)*[0:M-1]')+ampn*(randn(M,1)+im a*randn(M,1)); %干扰+噪声

s(ii)=amp0*exp(ima*2*pi**sin(theta0*pi/180))+amp1*exp(ima*2*pi**sin(theta1*pi /180))+ampn*(randn(1,1)+ima*randn(1,1));%接收信号(信号+干扰+噪声)s0(ii)=amp0*exp(ima*2*pi**sin(theta0*pi/180));

end

Rx=1/L*jam*jam'; %噪声自相关矩阵,相当于X(t)

r_xd=1/L*jam*s';

Wopt=pinv(Rx)*r_xd;

delta=s0-(s-Wopt'*jam);

delta1=abs(mean(delta.^2)-(mean(delta)).^2) %方差

theta=linspace(-pi/2,pi/2,200);

for jj=1:length(theta)

a=exp(ima*2*pi*.5*sin(theta(jj))*[0:M-1]');

f(jj)=Wopt'*a;

end

F=20*log10(abs(f)/(max(max(abs(f)))));

figure(1)

plot(theta*180/pi,F),grid on,hold on

plot(theta0,-50:0,'.')

plot(theta1,-50:0,'.')

xlabel('theta/o');

ylabel('F/dB');

title('MSE准则下的方向图')

axis([-90 90 -50 0]);%可为x轴和y轴设置一个极限范围仿真图如下:

7. %线性约束最小方差(LCMV)准则clc;

clear all ;

close all;

ima=sqrt(-1);

element_num=8; %阵元数

d_lamda=1/2; %阵元间距与波长的关系

theta=-90::; %搜索范围

theta0=0; %三个信号源的来波方向

theta1=30;

theta2=60;

L=512; %采样单元数

for i=1:L;

amp0=10*randn(1);

amp1=100*randn(1);

amp2=10*randn(1);

ampn=10;

x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...

amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+...

amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...

ampn*(randn(element_num,1)+ima*randn(element_num,1));

end

Rx=1/L*x* x';

steer1=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')

steer2=exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')

steer3=exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')

C=[steer1 steer2 steer3];

F=[1 0 1]'; %把三个方向都作为来波方向

w=inv(Rx)*C*(inv(C'*inv(Rx)*C))*F;

for j=1:length(theta);

a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');

f(j)=w'*a;

p(j)=1/(a'*inv(Rx)*a);

end

f=10*log10(abs(f)/(max(max(abs(f)))));

figure(1)

subplot(121)

plot(theta,f),grid on,hold on

plot(theta0,-20:0,'.')

plot(theta1,-20:0,'.')

plot(theta2,-20:0,'.')

xlabel('theta/o');

ylabel('F/dB');

title('Capon beamforming方向图')

axis([-90 90 -20 0]);%可为x轴和y轴设置一个极限范围P=10*log10(abs(p)/(max(max(abs(p)))));

subplot(122)

plot(theta,P),grid on,hold on

plot(theta0,-20:0,'.')

plot(theta1,-20:0,'.')

plot(theta2,-20:0,'.')

xlabel('theta/o');

ylabel('功率/dB');

title('Capon beamforming功率谱')

仿真图如下:

8. %Capon beamforming

Clc;

clear all ;

close all;

ima=sqrt(-1);

element_num=8; %阵元数

d_lamda=1/2; %阵元间距与波长的关系

theta=-90::90; %范围

theta0=0; %来波方向

theta1=20; %干扰方向

theta2=60; %干扰方向

L=1000; %采样单元数

for i=1:L;

amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的amp1=200*randn(1);

amp2=200*randn(1);

ampn=3;

x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...

amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+...

amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...

ampn*(randn(element_num,1)+ima*randn(element_num,1));

end

Rx=1/L*x* x';

R=inv(Rx);

steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]');

w=R*steer/(steer'*R*steer);%Capon最优权矢量

for j=1:length(theta);

a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');

f(j)=w'*a;

p(j)=1/(a'*R*a);

end

F=20*log10(abs(f)/(max(max(abs(f)))));

P=20*log10(abs(p)/(max(max(abs(p)))));%此处是功率的对数形式

自适应波束形成与Matlab程序代码注解

1.均匀线阵方向图 (1)matlab 程序 clc; clear all; close all; imag=sqrt(-1); element_num=32;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; end patternmag=abs(p); patternmagnorm=patternmag/max(max(patternmag)); patterndB=20*log10(patternmag); patterndBnorm=20*log10(patternmagnorm); figure(1) plot(theta*180/pi,patternmag); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); hold on; figure(2) plot(theta,patterndBnorm,'r'); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); axis([-1.5 1.5 -50 0]);

常规波束形成matlab程序

close all clear all clc c=1500; fs=10000; T=0.1; t=0:1/fs:T; L=length(t); f=500; w=2*pi*f; k=w/c; M=11;%阵元个数 Nmid=1;%参考点 d=3;%阵元间距 m=[0:1:M-1]; yi=zeros(M,1);%返回一个M*1维的零矩阵 zi=zeros(M,1); xi=m*d; xi=xi.'; %各阵元坐标 y1=20; x1=10;z1=10;%声源位置,y轴指向声源平面 Ric1=sqrt((x1-xi).^2+(y1-yi).^2+(z1-zi).^2);%声源至各阵元的距离M*1维 Rn1=Ric1-Ric1(Nmid);%声源至各阵元与参考阵元的声程差矢量M*1维 s1=cos(w*t);%参考阵元接收到的信号1*L维 snr=20; Am=10^(-snr/20); n1=Am*(randn(M,L)+j*randn(M,L));%各阵元噪声矢量 p1=zeros(M,L);%M*L维 for k1=1:M p1(k1,:)=Ric1(Nmid)/Ric1(k1)*s1.*exp(-j*w*Rn1(k1)/c);%各阵元经过幅度衰减和相位延迟后接收到的信号,M*L维 end p=p1+n1;%各阵元接收的声压信号矩阵M*L R=p*p'/L;%接收数据的自协方差矩阵M*M %---------------------------------------------------------- %扫描范围 step_x=0.1; step_z=0.1; y=y1;

波束形成Matlab程序

1?均匀线阵方向图%8阵元均匀线阵方向图,来波方向为clc; clear all; close all; 0度 imag=sqrt(_1); element_num=8;% 阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系theta=li nspace(-pi/2,pi/2,200); theta0=0;% 来波方向w=exp(imag*2*pi*dl_lamda*si n(theta0)*[0:eleme nt_nu m-1]'); for j=1:le ngth(theta) a=exp(imag*2*pi*dd_l amda*si n(theta(j))*[0:eleme nt_nu m-1]'); p(j)=w'*a; end figure; plot(theta,abs(p)),grid on xlabel('theta/radia n') ylabel('amplitude') title('8 阵元均匀线阵方向图')

°2 8阵元均匀线阵方向图 7 6 5 4 3 2 1 -15 -1 -0 5 0 06 thetaradian 1 15

8 当来波方向为45度时,仿真图如下 8阵元均匀线阵方向图如下,来波方向为0 度,20log (dB) 8阵元均苛銭阵方向图来波方向为0度

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下 Q d p E = ro 二

2. 波束宽度与波达方向及阵元数的关系 clc clear all close all ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03 米 d=1/2*lamda; % 阵元间距与波长的关系theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_n um1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_n um2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_ num3*d)); end

Capon 波束形成matlab仿真(附源代码)

Capon波束形成 阵列N=16,信号 0-30 θ? =,干扰为 160 θ?=, 219 θ? =, 345 θ? =,干扰功率分别为:40dB,35dB,50dB。Capon波束形成后的方向图和功率谱如下:

为了比较接收数据直接估计噪声协方差矩阵和利用干扰+噪声估计协方差矩阵的Capon 波束形成的差异,进行如下仿真: 可以看出利用干扰+噪声估计协方差矩阵的方向图性能较优于接收数据直接估计噪声协方差矩阵的方向图。 代码: clc; clear all ; close all; ima=sqrt(-1); element_num=8; %阵元数 d_lamda=1/2; %阵元间距与波长的关系 theta=-90:0.5:90; %范围 theta0=-30; %来波方向 theta1=60; %干扰方向1 theta2=19; %干扰方向2 theta3=45; %干扰方向3

L=1000; %采样单元数 for i=1:L; amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的amp1=100*randn(1);%输入阵列的噪声 amp2=sqrt(10^3.5)*randn(1);%输入阵列的噪声 amp3=sqrt(10^5)*randn(1);%输入阵列的噪声 ampn=3;%噪声 x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+... amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+... amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+... amp3*exp(ima*2*pi*1/2*sin(theta3*pi/180)*[0:element_num-1]')+... ampn*(randn(element_num,1)+ima*randn(element_num,1)); end Rx=1/L*x* x'; R=inv(Rx); steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]'); w=R*steer/(steer'*R*steer);%Capon最优权矢量 for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=w'*a; p(j)=1/(a'*R*a); end F=20*log10(abs(f)/(max(abs(f)))); P=20*log10(abs(p)/(max(abs(p))));%此处是功率的对数形式 figure; % subplot(121) plot(theta,F),grid on,hold on plot(theta0,-80:0,'.') plot(theta1,-80:0,'.') plot(theta2,-80:0,'.')

波束形成_Matlab程序

1.均匀线阵方向图 %8阵元均匀线阵方向图,来波方向为0度 clc; clear all; close all; imag=sqrt(-1); element_num=8;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=45/180*pi;%来波方向 (我觉得应该是天线阵的指向) %theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) %(我认为是入射角度,即来波方向,计算阵列流形矩阵A) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; %(matlab中的'默认为共轭转置,如果要计算转置为w.'*a) end figure; plot(theta,abs(p)),grid on xlabel('theta/radian') ylabel('amplitude') title('8阵元均匀线阵方向图') 见张小飞的书《阵列信号处理的理论和应用2.3.4节阵列的方向图》

当来波方向为45度时,仿真图如下: 8阵元均匀线阵方向图如下,来波方向为0度,20log(dB)

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下:

2.波束宽度与波达方向及阵元数的关系 clc clear all close all ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03米 d=1/2*lamda; %阵元间距与波长的关系 theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d)); end figure; plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid on xlabel('theta'); ylabel('Width in radians') title('波束宽度与波达方向及阵元数的关系') 仿真图如下:

CAPON波束形成_Matlab程序

CAPON 波束形成器仿真 1.实验原理 波束形成就是从传感器阵列重构源信号。(1)、通过增加期望信源的贡献来实现;(2)、通过抑制掉干扰源来实现。经典的波束形成需要观测方向(期望信源的方向)的知识。盲波束形成试图在没有期望信源方向信息的情况下进行信源的恢复。 波束形成技术的基本思想是:通过将各阵元输出进行加权求和,在一时间内将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出DOA 估计。 虽然阵列天线的方向图是全方向的,但阵列的输出经过加权求和后,却可以被调整到阵列接收的方向增益聚集在一个方向上,相当于形成了一个”波束”。这就是波束形成的物理意义所在。 在智能天线中,波束形成是关键技术之一,是提高信噪比、增加用户容量的保证,能够成倍地提高通信系统的容量,有效地抑制各种干扰,并改善通信质量。 波束形成器的最佳权向量w 取决于阵列方向向量)(a k θ ,而在移动通信里用户的方向向量一般未知,需要估计(称之为DOA 估计)。因此,在计算波束形成的最佳权向量之前,必须在已知阵列几何结构的前提下先估计期望信号的波达方向。 Capon 波束形成器求解的优化问题可表述为 w arg min P(w)θ= 其约束条件为 1)(a w H =θ Capon 波束形成器在使噪声和干扰所贡献的功率为最小的同时,保持了期 望信号的功率不变。因此,它可以看作是一个尖锐的空间带通滤波器。最优加 权向量w 可以利用Lagrange 乘子法求解,其结果为 )(a R ?)(a )(a R ?w 1H 1CAP θθθ--=

当μ不取常数,而取作 )(a R ?)(a 11H θθμ-=时,最佳权向量就转变成Capon 波束形成器的权向量。空间谱为 )(a R ?)(a 1)(P 1-H CAP θθθ= 2.变量定义 M :均匀线阵列数目 P :信号源个数 nn :快拍数 angle1、angle2、angle3:信号来波角度 u :复高斯噪声 Ps :信号能量 refp :信噪比(实值) X :接收信号 Rxx :接收信号的相关矩阵 doa :波达方向估计 3.仿真结果 采用上述算法进行仿真,结果如图所示。 在本仿真程序中,我们采用16个均匀线阵列,3个信号源,来波角度分别为5?、45?、20-?,信噪比均为10dB ,噪声为复高斯白噪声,快拍数1000。 由仿真结果看出,capon 波束形成器较好的给出了信号的doa 估计,但是在仿真的过程中,我们发现,capon 算法具有很大的局限性,其对扰和噪声是比较敏感的。 4.程序 clear all i=sqrt(-1); j=i; M=16; %均匀线阵列数目 P=3; %信号源数目 f0=10;f1=50;f2=100;%信号频率 nn=1000; %快拍数

Capon-波束形成matlab仿真(附源代码)教学内容

C a p o n-波束形成m a t l a b仿真(附源代 码)

Capon波束形成 阵列N=16,信号 0-30 θ? =,干扰为 160 θ?=, 219 θ? =, 345 θ? =,干扰功率分别为:40dB,35dB,50dB。Capon波束形成后的方向图和功率谱如下:

为了比较接收数据直接估计噪声协方差矩阵和利用干扰+噪声估计协方差矩阵的Capon波束形成的差异,进行如下仿真: 可以看出利用干扰+噪声估计协方差矩阵的方向图性能较优于接收数据直接估计噪声协方差矩阵的方向图。 代码: clc; clear all ; close all; ima=sqrt(-1); element_num=8; %阵元数 d_lamda=1/2; %阵元间距与波长的关系 theta=-90:0.5:90; %范围 theta0=-30; %来波方向 theta1=60; %干扰方向1 theta2=19; %干扰方向2 theta3=45; %干扰方向3

L=1000; %采样单元数 for i=1:L; amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的 amp1=100*randn(1);%输入阵列的噪声 amp2=sqrt(10^3.5)*randn(1);%输入阵列的噪声 amp3=sqrt(10^5)*randn(1);%输入阵列的噪声 ampn=3;%噪声 x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+... amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+... amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+... amp3*exp(ima*2*pi*1/2*sin(theta3*pi/180)*[0:element_num-1]')+... ampn*(randn(element_num,1)+ima*randn(element_num,1)); end Rx=1/L*x* x'; R=inv(Rx); steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]'); w=R*steer/(steer'*R*steer);%Capon最优权矢量 for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=w'*a; p(j)=1/(a'*R*a); end F=20*log10(abs(f)/(max(abs(f)))); P=20*log10(abs(p)/(max(abs(p))));%此处是功率的对数形式 figure; % subplot(121) plot(theta,F),grid on,hold on plot(theta0,-80:0,'.') plot(theta1,-80:0,'.') plot(theta2,-80:0,'.')

Matlab波束形成程序

波束形成与智能天线 1.均匀线阵方向图 %8阵元均匀线阵方向图,来波方向为0度 clc; clear all; close all; imag=sqrt(-1); element_num=8;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; end 页脚内容1

figure; plot(theta,abs(p)),grid on xlabel('theta/radian') ylabel('amplitude') title('8阵元均匀线阵 方向图') 当来波方向为45度 时,仿真图如下: 8阵元均匀线阵方向图如下,来波 方向为0度,20log(dB) 页脚内容2

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下: 页脚内容3

页脚内容4

2. 波束宽度与波达方向及阵元数的关系 clc clear all close all 页脚内容5

ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03米 d=1/2*lamda; %阵元间距与波长的关系 theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d)); end figure; plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid on xlabel('theta'); ylabel('Width in radians') title('波束宽度与波达方向及阵元数的关系') 页脚内容6

自适应波束形成Matlab仿真

信息与通信工程学院 阵列信号处理实验报告(自适应波束形成Matlab仿真) 学号:XXXXXX 专业:XXXXXX 学生姓名:XXX 任课教师:XXX 2015年X月

题目:自适应波束形成Matlab 仿真 1. 算法简述: 自适应波束形成,源于自适应天线的一个概念。接收端的信号处理,可以通过将各阵元输出进行加权求和,将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出波达方向估计。 波束形成算法是在一定准则下综合个输入信息来计算最优权值的数学方法,线性约束最小方差准则(LCMV )是最重要、最常用的方法之一。LCMV 是对有用信号形式和来向完全已知,在某种约束条件下使阵列输出的方差最小。该准则属于广义约束,缺点是需要知道期望分量的波达方向。准则的代价函数为 Rw w w J H )(=,约束条件为H ()θ=w a f ;最佳解为f c R c c R w 11H 1H ][---。 2. 波束形成原理 以一维M 元等距离线阵为例,如图1所示,设空间信号为窄带信号,每个通道用一个附加权值系数来调整该通道的幅度和相位。 图1 波束形成算法结构图 这时阵列的输出可以表示为: *1 ()()()M i i i y t w x t θ== ∑ 如果采用矢量来表示各阵元输出及加权系数,即 T 12()[()()()]M x t x t x t x t = T 12()[()()()]M w w w w θθθθ= 1()w θ 1()x n 1()w θ 1()x n 1()w θ 1()x n …….. ()y n

那么,阵列的输出也可以用矢量表示为 H ()()()y t t θ=w x 为了在某一方向θ上补偿各阵元之间的时延以形成一个主瓣,常规波束形成器在期望方向上的加权矢量可以构成为 (1)T ()[1e e ]j j M w ωτ ωτθ---= 观察此加权矢量,发现若空间只有一个来自方向θ的信号,其方向矢量()αθ的表示形式与此权值矢量相同。则有 H H ()()()()()y t t t θαθ==w x x 这时常规波束形成器的输出功率可以表示为 2H H ()[()]()()()()CBF P E y t θθθαθαθ===w Rw R 式中矩阵R 为阵列输出()t x 的协方差矩阵。 3. 实验内容与结果: 实验使用均匀线阵,阵元间距为信号波长的一半,输入信号为1个BPSK 信号,2个非相干的单频干扰,设置载波频率10MHz 、采样频率50MHz 、快拍数300、信噪比-25dB 、信干比-90dB 、信号方位角0、干扰方位角40-和50,分析阵元数分别在3、6、9和12时波束图的变化。实验结果见图1。 图1 不同阵元数情况下的波束图

LMS波束形成代码

LMS波束形成代码(matlab) LMS算法的仿真程序: %lms 算法 clear all close all hold off%系统信道权数 sysorder = 5 ;%抽头数 N=1000;%总采样次数 inp = randn(N,1);%产生高斯随机系列 n = randn(N,1); [b,a] = butter(2,0.25); Gz = tf(b,a,-1);%逆变换函数 h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量y = lsim(Gz,inp);%加入噪声 n = n * std(y)/(10*std(n));%噪声信号 d = y + n;%期望输出信号 totallength=size(d,1);%步长 N=60 ; %60节点作为训练序列 %算法的开始 w = zeros ( sysorder , 1 ) ;%初始化 for n = sysorder : N u = inp(n:-1:n-sysorder+1) ;% u的矩阵

y(n)= w' * u;%系统输出 e(n) = d(n) - y(n) ;%误差 if n < 20 mu=0.32; else mu=0.15; end w = w + mu * u * e(n) ;%迭代方程end %检验结果 for n = N+1 : totallength u = inp(n:-1:n-sysorder+1) ; y(n) = w' * u ; e(n) = d(n) - y(n) ;%误差 end hold on plot(d) plot(y,'r'); title('系统输出') ; xlabel('样本') ylabel('实际输出') figure

LMS波束形成代码

LMS波束形成代码(matlab)LMS算法的仿真程序: %lms 算法 clear all close all hold off%系统信道权数 sysorder = 5 ;%抽头数 N=1000;%总采样次数 inp = randn(N,1);%产生高斯随机系列 n = randn(N,1); 【 [b,a] = butter(2,; Gz = tf(b,a,-1);%逆变换函数 h= [;;;;;];%信道特性向量 y = lsim(Gz,inp);%加入噪声 n = n * std(y)/(10*std(n));%噪声信号 ^ d = y + n;%期望输出信号 totallength=size(d,1);%步长 N=60 ; %60节点作为训练序列 %算法的开始 w = zeros ( sysorder , 1 ) ;%初始化 )

for n = sysorder : N u = inp(n:-1:n-sysorder+1) ;% u的矩阵y(n)= w' * u;%系统输出 e(n) = d(n) - y(n) ;%误差 if n < 20 " mu=; else mu=; end w = w + mu * u * e(n) ;%迭代方程 - end %检验结果 for n = N+1 : totallength u = inp(n:-1:n-sysorder+1) ; y(n) = w' * u ; · e(n) = d(n) - y(n) ;%误差 end hold on plot(d) plot(y,'r'); .

title('系统输出') ; xlabel('样本') ylabel('实际输出') figure semilogy((abs(e))) ;% e的绝对值坐标$ title('误差曲线') ; xlabel('样本') ylabel('误差矢量') figure%作图 plot(h, 'k+') { hold on plot(w, 'r*') legend('实际权矢量','估计权矢量') title('比较实际和估计权矢量') ; axis([0 6 ]) " 算法的仿真程序: %lms 算法 clear all close all hold off%系统信道权数 |

波束形成-Matlab程序

} 1.均匀线阵方向图 %8阵元均匀线阵方向图,来波方向为0度 clc; clear all; close all; imag=sqrt(-1); element_num=8;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 < theta=linspace(-pi/2,pi/2,200); theta0=45/180*pi;%来波方向 (我觉得应该是天线阵的指向) %theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) %(我认为是入射角度,即来波方向,计算阵列流形矩阵A) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; %(matlab中的'默认为共轭转置,如果要计算转置为w.'*a) end : figure; plot(theta,abs(p)),grid on xlabel('theta/radian') ylabel('amplitude') title('8阵元均匀线阵方向图') 见张小飞的书《阵列信号处理的理论和应用2.3.4节阵列的方向图》

, 当来波方向为45度时,仿真图如下: 8阵元均匀线阵方向图如下,来波方向为0度,20log(dB)

~ , 随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下:

- [ )

/ * 2.波束宽度与波达方向及阵元数的关系clc clear all close all ima=sqrt(-1); 。 element_num1=16; %阵元数 element_num2=128;

波束形成 Matlab程序教学文稿

波束形成M a t l a b程 序

1.均匀线阵方向图 %8阵元均匀线阵方向图,来波方向为0度 clc; clear all; close all; imag=sqrt(-1); element_num=8;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; end figure; plot(theta,abs(p)),grid on xlabel('theta/radian') ylabel('amplitude')

title('8阵元均匀线阵方向图') 当来波方向为45度时,仿真图如下:

8阵元均匀线阵方向图如下,来波方向为0度,20log(dB)

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下:

2.波束宽度与波达方向及阵元数的关系 clc clear all close all ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03米 d=1/2*lamda; %阵元间距与波长的关系 theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d)); end figure; plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid on xlabel('theta'); ylabel('Width in radians') title('波束宽度与波达方向及阵元数的关系') 仿真图如下:

第3章自适应波束形成及算法

第3章 自适应波束形成及算法 (3.2 自适应波束形成的几种典型算法) 3.2 自适应波束形成的几种典型算法 自适应波束形成技术的核心内容就是自适应算法。目前已提出很多著名算法,非盲的算法中主要是基于期望信号和基于DOA 的算法。常见的基于期望信号的算法有最小均方误差(MMSE )算法、小均方(LMS )算法、递归最小二乘(RLS )算法,基于DOA 算法中的最小方差无畸变响应(MVDR )算法、特征子空间(ESB )算法等[9]。 3.2.1 基于期望信号的波束形成算法 自适应算法中要有期望信号的信息,对于通信系统来讲,这个信息通常是通过发送训练序列来实现的。根据获得的期望信号的信息,再利用MMSE 算法、LMS 算法等进行最优波束形成。 1.最小均方误差算法(MMSE ) 最小均方误差准则就是滤波器的输出信号与需要信号之差的均方值最小,求得最佳线性滤波器的参数,是一种应用最为广泛的最佳准则。阵输入矢量为: 1()[(),,()]T M x n x n x n = (3-24) 对需要信号()d n 进行估计,并取线性组合器的输出信号()y n 为需要信号 ()d n 的估计值?()d n ,即 *?()()()()H T d n y n w x n x n w === (3-25) 估计误差为: ?()()()()()H e n d n d n d n w x n =-=- (3-26) 最小均方误差准则的性能函数为: 2{|()|}E e t ξ= (3-27) 式中{}E 表示取统计平均值。最佳处理器问题归结为,使阵列输出 ()()T y n w X n =与参考信号()d t 的均方误差最小,即: 2{|()|}MinE e t

mVDR波束形成matlab程序

clear all clc c=1500; fs=10e3; T = 1; t = 0:1/fs:T; L=length(t); f=2000; w=2*pi*f; k=w/c; M=11; %阵元个数 Nmid=1; %参考点 d=3;%阵元间距 m=[0:1:M-1]; yi=zeros(M,1);% 返回一个M*1维的零矩阵 zi=zeros(M,1); xi=m*d; xi=xi.'; %各阵元坐标 y1=12; x1=10;z1=10;% 声源位置,y轴指向声源平面 Ric1=sqrt((x1-xi).^2+(y1-yi).^2+(z1-zi).^2);%声源至各阵元的距离M*1维 Rn1=Ric1-Ric1(Nmid);%声源至各阵元与参考阵元的声程差矢量M*1维 s1=cos(w*t);%参考阵元接收到的信号1*L维 snr =20; Am= 10^(-snr/20); n1=Am*(randn(M,L)+j*randn(M,L));%各阵元噪声矢量 p1=zeros(M,L);%M*L维 for k1=1:M p1(k1,:)=Ric1(Nmid)/Ric1(k1)*s1.*exp(-j*w*Rn1(k1)/c); %各阵元经过幅度衰减和相位延迟后接收到的信号,M*L维 end p=p1+n1;%各阵元接收的声压信号矩阵M*L R=p*p'/L;%接收数据的自协方差矩阵M*M RP=inv(R);%求R的逆矩阵 % ---------------------------------------------------------- % 扫描范围 step_x=0.1; step_z=0.1;

mVDR波束形成matlab程序教学提纲

m V D R波束形成m a t l a b程序

close all clear all clc c=1500; fs=10e3; T = 1; t = 0:1/fs:T; L=length(t); f=2000; w=2*pi*f; k=w/c; M=11; %阵元个数 Nmid=1; %参考点 d=3;%阵元间距 m=[0:1:M-1]; yi=zeros(M,1);% 返回一个M*1维的零矩阵 zi=zeros(M,1); xi=m*d; xi=xi.'; %各阵元坐标 y1=12; x1=10;z1=10;% 声源位置, y轴指向声源平面 Ric1=sqrt((x1-xi).^2+(y1-yi).^2+(z1-zi).^2);%声源至各阵元的距离 M*1维Rn1=Ric1-Ric1(Nmid);%声源至各阵元与参考阵元的声程差矢量 M*1维 s1=cos(w*t);%参考阵元接收到的信号 1*L维 snr =20; Am= 10^(-snr/20); n1=Am*(randn(M,L)+j*randn(M,L));%各阵元噪声矢量 p1=zeros(M,L);%M*L维 for k1=1:M

p1(k1,:)=Ric1(Nmid)/Ric1(k1)*s1.*exp(-j*w*Rn1(k1)/c); %各阵元经过幅度衰减和相位延迟后接收到的信号,M*L维 end p=p1+n1;%各阵元接收的声压信号矩阵 M*L R=p*p'/L;%接收数据的自协方差矩阵 M*M RP=inv(R);%求R的逆矩阵 % ---------------------------------------------------------- % 扫描范围 step_x=0.1; step_z=0.1; y=y1; x=[0:step_x:20]; z=[0:step_z:20]; for k1=1:length(z) % 纵坐标 for k2=1:length(x) Ri=sqrt((x(k2)-xi).^2+(y-yi).^2+(z(k1)-zi).^2); %该扫描点至各阵元的聚焦距离矢量 Rn=Ri-Ri(Nmid);%扫描点到各阵元与参考阵元的程差矢量 M*1 b=exp(-j*w*Rn/c);%声压聚焦方向矢量 M*1 Pmvdr(k1,k2)=1/abs(b'*RP*b); end end % 归一化 for k1=1:length(z) pp1(k1)=max(Pmvdr(k1,:));% Pmvdr的第k1行的最大元素的值 end

CAPON波束形成-Matlab程序教学文稿

C A P O N波束形成- M a t l a b程序

CAPON波束形成器仿真 1.实验原理 波束形成就是从传感器阵列重构源信号。(1)、通过增加期望信源的贡献来实现;(2)、通过抑制掉干扰源来实现。经典的波束形成需要观测方向(期望信源的方向)的知识。盲波束形成试图在没有期望信源方向信息的情况下进行信源的恢复。 波束形成技术的基本思想是:通过将各阵元输出进行加权求和,在一时间内将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出DOA估计。 虽然阵列天线的方向图是全方向的,但阵列的输出经过加权求和后,却可以被调整到阵列接收的方向增益聚集在一个方向上,相当于形成了一个”波束”。这就是波束形成的物理意义所在。 在智能天线中,波束形成是关键技术之一,是提高信噪比、增加用户容量的保证,能够成倍地提高通信系统的容量,有效地抑制各种干扰,并改善通信质量。 波束形成器的最佳权向量w取决于阵列方向向量 ) (a k ,而在移动通 信里用户的方向向量一般未知,需要估计(称之为DOA估计)。因此,在计算波

束形成的最佳权向量之前,必须在已知阵列几何结构的前提下先估计期望信号的波达方向。 Capon 波束形成器求解的优化问题可表述为 w arg min P(w)θ= 其约束条件为 1)(a w H =θ Capon 波束形成器在使噪声和干扰所贡献的功率为最小的同时,保持了期 望信号的功率不变。因此,它可以看作是一个尖锐的空间带通滤波器。最优加 权向量w 可以利用Lagrange 乘子法求解,其结果为 )(a R ?)(a )(a R ?w 1H 1CAP θθθ--= 当μ不取常数,而取作 )(a R ?)(a 1 1H θθμ-=时,最佳权向量就转变成Capon 波束形成器的权向量。空间谱为 )(a R ?)(a 1)(P 1-H CAP θθθ= 2.变量定义 M :均匀线阵列数目 P :信号源个数 nn :快拍数 angle1、angle2、angle3:信号来波角度 u :复高斯噪声 Ps :信号能量 refp :信噪比(实值)

相关主题
文本预览
相关文档 最新文档