自适应波束形成Matlab仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息与通信工程学院
阵列信号处理实验报告(自适应波束形成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 θθθθ=
()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; %dB
SNR = -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_No
if bit(i) == 1
bitstream = [bitstream, ones(1, Fs/RB)];
else
bitstream = [bitstream, -ones(1, Fs/RB)];
end
end
Carrier_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 +1
Signal(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:4
sensor_No = mmm*3;
As = zeros(sensor_No,S_No);
for i = 1:sensor_No
for ii = 1:S_No
As(i,ii) = exp(-1i*2*pi*sin(azimuth(ii))*d/wavelength*(i-1));
end
end
x = 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:181
for m = 1:sensor_No
LMS_R(i) = LMS_R(i) + conj(Wopt(m)) * exp(-1i*2*pi*sin(all_azimuth(i))*d/wavelength*(m-1));
end
LMS_P(i) = (abs(LMS_R(i)))^2;
end
LMS_PdB = 10*log10(LMS_P/max(LMS_P));
switch mmm
case 1
plot(all_azimuth*180/pi,LMS_PdB,'--g','LineWidth',2);hold on;
case 2
plot(all_azimuth*180/pi,LMS_PdB,'.b','LineWidth',2);
case 3
plot(all_azimuth*180/pi,LMS_PdB,'-.w','LineWidth',2);
case 4
plot(all_azimuth*180/pi,LMS_PdB,':r','LineWidth',2);
end
grid 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);
end
hl=legend('阵元数3个','阵元数6个','阵元数9个','阵元数12个',1); set(hl,'edgecolor','w','color',[1 1 1]);
title('自适应波束形成');
drawnow;。

相关文档
最新文档