当前位置:文档之家› 自适应波束形成Matlab仿真

自适应波束形成Matlab仿真

信息与通信工程学院阵列信号处理实验报告(自适应波束形成Matlab仿真)学号:XXXXXX专业:XXXXXX学生姓名:XXX任课教师:XXX2015年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()()()Mi i iy t w x t θ==∑ 如果采用矢量来表示各阵元输出及加权系数,即T 12()[()()()]M x t x t x t x t =T 12()[()()()]M w w w w θθθθ=()x n()x n()x 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 不同阵元数情况下的波束图4.仿真分析由上图可知,在已知实验条件下,均匀线阵阵元数不小于信号干扰总数时,应用LCMV方法得到的波束图在信噪比很低的情况下可以有效抑制非相干干扰;对于信号方向虽然波束主瓣可以较准确地指向信号来向,但阵元数为4时,主瓣波束宽度较大,旁瓣增益较大;当阵元数增加,主瓣波束逐渐变窄并且能精准地指向信号来向,同时旁瓣数目增加、增益逐渐变小。

因此,增加阵元的数目可以有效地提高波束形成精度,同时主瓣变窄,旁瓣变小,使得输出信噪比有效提高。

5.程序clear all;close all;clc;%---------------------------------%信号参数设置Signal_No = 1;Interference_No = 2;%小于五S_No = Signal_No + Interference_No; %信号总数sensor_No = 12; %阵元数azimuth = [0*pi/180 -40*pi/180 50*pi/180 30*pi/180 20*pi/180]; %方位角Fs = 50e6;Fc = 10e6;F1 = [8e6 9e6 10e6 11e6]; %干扰功率RB = 1e6;M = 2; %二进制wavelength = 3e8/Fc;d = wavelength/2;K = 300; %快拍数Ps = 0; %dBSNR = -15;SIR = -90;M_No = 40; %码速率等于信息速率Data_No = M_No*Fs/RB;t = 1/Fs:1/Fs:Data_No/Fs;%---------------------------------%功率转换Ps_l = 10^(Ps/10);Pi_l = 10^((Ps-SIR)/10);Pn_l = 10^((Ps-SNR)/10);%---------------------------------%信号生成bit = randint(1,M_No); %产生信息序列bitstream = [];for i = 1:M_Noif bit(i) == 1bitstream = [bitstream, ones(1, Fs/RB)];elsebitstream = [bitstream, -ones(1, Fs/RB)];endendCarrier_R = cos(2*pi*Fc*t);S_R = Carrier_R .* bitstream;Carrier_I = sin(2*pi*Fc*t);S_I = Carrier_I .* bitstream;Signal_R = sqrt(Ps_l)*S_R/sqrt((S_R*S_R'/length(S_R)));Signal_I = sqrt(Ps_l)*S_I/sqrt((S_I*S_I'/length(S_I)));%生成BPSK复信号Signal(1,:) = complex(Signal_R, Signal_I);%---------------------------------% %产生干扰for i = 2:Interference_No +1Signal(i,:)=sqrt(2*Pi_l)*complex(sin(2*pi*F1(i-1)*t+pi/10*i),sin(2*pi*F1(i-1)*t+pi/10*i));end%---------------------------------% 模拟天线接收%----------------------------------%四次循环name = [' 3',' 6',' 9','12'];for mmm =1:4sensor_No = mmm*3;As = zeros(sensor_No,S_No);for i = 1:sensor_Nofor ii = 1:S_NoAs(i,ii) = exp(-1i*2*pi*sin(azimuth(ii))*d/wavelength*(i-1));endendx = As * Signal;%% %---------------------------------% %加噪声noise_R = randn(sensor_No,Data_No)*sqrt(Pn_l);noise_I = randn(sensor_No,Data_No)*sqrt(Pn_l);noise = complex(noise_R, noise_I);s = x + noise;%---------------------------------%lcmv算法% Ad = [1 0 0 0 0 0 0 0 0 0 0 0 ]';Ad = (As(:,1));x1 = s(:,(1:K));Rx=x1*x1'/K;alfa=inv(Ad'*inv(Rx)*Ad);Wopt=alfa*inv(Rx)*Ad;%------------------------%---------------------------------%mvdr% Ad = (As(:,1));% x1 = s(:,(1:K));% Rx=x1*x1'/K;% QR_Wopt1 = inv(Rx)*Ad;% Wopt=QR_Wopt1./QR_Wopt1(1);%---------------------------------%波束图figure(1)whitebg('k');all_azimuth = -pi/2:pi/180:pi/2;LMS_R = zeros(1,181);for i = 1:181for m = 1:sensor_NoLMS_R(i) = LMS_R(i) + conj(Wopt(m)) * exp(-1i*2*pi*sin(all_azimuth(i))*d/wavelength*(m-1));endLMS_P(i) = (abs(LMS_R(i)))^2;endLMS_PdB = 10*log10(LMS_P/max(LMS_P));switch mmmcase 1plot(all_azimuth*180/pi,LMS_PdB,'--g','LineWidth',2);hold on;case 2plot(all_azimuth*180/pi,LMS_PdB,'.b','LineWidth',2);case 3plot(all_azimuth*180/pi,LMS_PdB,'-.w','LineWidth',2);case 4plot(all_azimuth*180/pi,LMS_PdB,':r','LineWidth',2);endgrid on;axis([-90 90 -70 10]);xlabel('方位角(度)')ylabel('阵列增益(dB)')%title(strcat('阵元数',name([2*mmm-1:2*mmm]),'个'));% figure(2);% polar ((-pi/2:pi/180:pi/2),LMS_PdB+109); figure(gcf);endhl=legend('阵元数3个','阵元数6个','阵元数9个','阵元数12个',1); set(hl,'edgecolor','w','color',[1 1 1]);title('自适应波束形成');drawnow;。

相关主题