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

Capon-波束形成matlab仿真(附源代码)教学内容
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,'.')

plot(theta3,-80:0,'.')

xlabel('theta/o');

ylabel('F/dB');

title('Capon beamforming方向图') % axis([-90 90 -50 0]);

% subplot(122)

figure;

plot(theta,P),grid on

xlabel('theta/o');

ylabel('功率/dB');

title('Capon beamforming功率谱')

自适应波束形成与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程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

常规波束形成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; %快拍数

(图论)matlab模板程序

(图论)matlab模板程序

第一讲:图论模型 程序一:可达矩阵算法 %根据邻接矩阵A(有向图)求可达矩阵P(有向图) function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; %将不为0的元素变为1 P; 程序二:无向图关联矩阵和邻接矩阵互换算法F表示所给出的图的相应矩阵 W表示程序运行结束后的结果 f=0表示把邻接矩阵转换为关联矩阵 f=1表示把关联矩阵转换为邻接矩阵 %无向图的关联矩阵和邻接矩阵的相互转换 function W=incandadf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F))/2; %计算图的边数 n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; %给边的始点赋值为1 W(j,k)=1; %给边的终点赋值为1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; %存在边,则邻接矩阵的对应值为1 W(a(2),a(1))=1;

end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 %有向图的关联矩阵和邻接矩阵的转换 function W=mattransf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 %由i发出的边,有向边的始点 W(i,k)=1; %关联矩阵始点值为1 W(j,k)=-1; %关联矩阵终点值为-1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); %有向边的两个顶点 if F(a(1),i)==1 W(a(1),a(2))=1; %有向边由a(1)指向a(2) else W(a(2),a(1))=1; %有向边由a(2)指向a(1) end end else fprint('Please imput the right value of f'); end W;

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程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计 四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 1.概述 1.网络科学的概述 网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 2.最近邻耦合网络的概述 如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。 常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2 就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。 NCN的Matlab实现: %function b = ncn(N,K) %此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络 %返回结果b为该最近邻耦合网络对应的邻接矩阵 function b = ncn(N,K) b=zeros(N); for i = 1:N for j = (i+1):(i+K/2) if j<=N b(i,j)=1; b(j,i)=1; else b(i,j-N)=1;

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

多目标优化实例和matlab程序

NSGA-II 算法实例 目前的多目标优化算法有很多, Kalyanmoy Deb 的带精英策略的快速非支配排序遗传算法(NSGA-II) 无疑是其中应用最为广泛也是最为成功的一种。本文用的算法是MATLAB 自带的函数gamultiobj ,该函数是基于NSGA-II 改进的一种多目标优化算法。 一、 数值例子 多目标优化问题 424221********* 4224212212112 12min (,)10min (,)55..55 f x x x x x x x x x f x x x x x x x x x s t x =-++-=-++-≤≤??-≤≤? 二、 Matlab 文件 1. 适应值函数m 文件: function y=f(x) y(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2; y(2)=x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); 2. 调用gamultiobj 函数,及参数设置: clear clc fitnessfcn=@f; %适应度函数句柄 nvars=2; %变量个数 lb=[-5,-5]; %下限 ub=[5,5]; %上限 A=[];b=[]; %线性不等式约束 Aeq=[];beq=[]; %线性等式约束 options=gaoptimset('paretoFraction',0.3,'populationsize',100,'generations',200,'stallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto); % 最优个体系数paretoFraction 为0.3;种群大小populationsize 为100,最大进化代数generations 为200, % 停止代数stallGenLimit 为200, 适应度函数偏差TolFun 设为1e-100,函数gaplotpareto :绘制Pareto 前端 [x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

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图论程序算法大全

精心整理 图论算法matlab实现 求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 for while for for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路

for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end ;end;end if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 while if elseif if if pd=0; 值 t=n; if elseif if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程 t=s(t);end if(pd)break;end%如果最大流量达到预定的流量值 wf=0; for(j=1:n)wf=wf+f(1,j);end;end %计算最大流量 zwf=0;for(i=1:n)for(j=1:n)zwf=zwf+b(i,j)*f(i,j);end;end%计算最小费用

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 1.1 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到 j v 的权 ij w =∞ 。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1i v +,使1()min{()}i l v l v +=,v S ∈; ⑤ 1{}i S S v += ,1{}i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v - 是从1v 到n v 的最短路径,则121n v v v - 也必然是从1v 到1n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表示顶点i v 到 j v 的权 ij w ,若i v 到 j v 无边,则 realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数(1.7977e+308)。 function re=Dijkstra(ma)

相关文档
最新文档