Matlab实现雷达波位编排
Matlab实现雷达波位编排
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
%本程序用于雷达球坐标系到正弦空间坐标系的转换,以及相控阵雷达的波位编排。
2 完整代码
%070228添加波位数据保存
clear
all
close
all
clc
%波束宽度,单位:度
BeamWidth
=
3.6;
theta05
=
round(sin(BeamWidth*pi/180)*1000)/1000;
%雷达作用空域
AZ
=
[-15 15]; %方位角范围(雷达球坐标系),单位:度
EL
=
[0 30]; %俯仰角范围(雷达球坐标系),单位:度
%阵面倾角,单位:度
thetaT
=
atan(-(cos(EL(1)*pi/180) - cos(EL(2)*pi/180))/(sin(EL(1)*pi/180) - sin(EL(2)*pi/180))*cos(AZ(2)*pi/180))*180/pi;
%左边界
az
=
AZ(1);
el
=
EL(1):EL(2);
alpha1
=
cos(el*pi/180)*sin(az*pi/180);
beta1
=
sin(el*pi/180)*cos(thetaT*pi/180)-cos(el*pi/180)*cos(az*pi/180)*sin(thetaT*pi/180);
%右边界
az
=
AZ(2);
el
=
EL(1):EL(2);
alpha2
=
cos(el*pi/180)*sin(az*pi/180);
beta2
=
sin(el*pi/180)*cos(thetaT*pi/180)-cos(el*pi/180)*cos(az*pi/180)*sin(thetaT*pi/180);
%下边界
az
=
AZ(1):AZ(2);
el
=
EL(1);
alpha3
=
cos(el*pi/180)*sin(az*pi/180);
beta3
=
sin(el*pi/180)*cos(thetaT*pi/180)-cos(el*pi/180)*cos(az*pi/180)*sin(thetaT*pi/180);
%上边界
az
=
AZ(1):AZ(2);
el
=
EL(2);
alpha4
=
cos(el*pi/180)*sin(az*pi/180);
beta4
=
sin(el*pi/180)*cos(thetaT*pi/180)-cos(el*pi/180)*cos(az*pi/180)*sin(thetaT*pi/180);
lowup
=
max(beta3);
lowest
=
min(beta3);
rightest
=
max(alpha3) + theta05/2;
leftest
=
min(alpha3) - theta05/2;
upest
=
max(beta4);
uplow
=
min(beta4);
figure(1),plot(alpha1,beta1,’r’);axis([
leftest-0.1 rightest+0.05 lowest-0.05 upest+0.1]);hold on;grid on;
title(’雷达波束在正弦空间的编排’);xlabel(’alpha(rad)’);ylabel(’beta(rad)’);
plot(alpha2,beta2,’r’);
plot(alpha3,beta3,’r’);
plot(alpha4,beta4,’r’);
%
pause(0.1)
%
=
=========================================================================
BoweiNumber
=
0;
Mx
=
2*round(rightest/theta05)-1;
My
=
round((upest - lowest)/(0.866*theta05));
arr_x0
=
zeros(My,Mx); %波位坐标(方位角)
arr_y0
=
zeros(My,Mx); %波位坐标(俯仰角)
arr_NboweiRow
=
zeros(My,1); %每一行的波位数目
%---------------奇数行------------------------
m
=
0;
for
y0 = lowest+theta05/2: 2*0.866*theta05 : upest
m
=
m + 1;
n
=
0;
NboweiRow
=
0;
for
x0 = 0:theta05:rightest
n
=
n + 1;
x
=
(-theta05/2:0.001:theta05/2) + x0;
y1
=
sqrt((theta05/2)^2 - (x - x0).^2) + y0;
y2
=
-sqrt((theta05/2)^2 - (x - x0).^2) + y0;
%
alpha2,beta2:右边界
flag
=
0;
[minValue
minSite] = min(abs(beta2 - y0));
if
alpha2(minSite) + theta05/2 >= x0
flag
=
1;
end
if
y0 < lowup
%
alpha3,beta3:下边界
[minValue
minSite] = min(abs(alpha3 - x0));
if
beta3(minSite) > y0
flag
=
0;
end
end
if
y0 > uplow
%
alpha4,beta4:上边界
[minValue
minSite] = min(abs(alpha4 - x0));
if
beta4(minSite) + theta05/2 <= y0
flag
=
0;
end
end
if
flag == 1
NboweiRow
=
NboweiRow + 1;
plot(x,real(y1));
plot(x,real(y2));
pause(0.01)
BoweiNumber
=
BoweiNumber + 1;
arr_x0((m-1)*2+1,round(Mx/2)+n)
=
x0;
arr_y0((m-1)*2+1,round(Mx/2)+n)
=
y0;
end
end
arr_NboweiRow(
(m-1)*2 + 1 ) = NboweiRow;
end
m
=
0;
for
y0 = lowest+theta05/2 : 2*0.866*theta05 : upest
m
=
m + 1;
n
=
0;
NboweiRow
=
0;
for
x0 = -theta05:-theta05:leftest
n
=
n + 1;
x
=
(-theta05/2:0.001:theta05/2) + x0;
y1
=
sqrt((theta05/2)^2 - (x - x0).^2) + y0;
y2
=
-sqrt((theta05/2)^2 - (x - x0).^2) + y0;
%
alpha1,beta1:左边界
flag
=
0;
[minValue
minSite] = min(abs(beta1 - y0));
if
alpha1(minSite) - theta05/2 <= x0
flag
=
1;
end
if
y0 < lowup
%
alpha3,beta3:下边界
[minValue
minSite] = min(abs(alpha3 - x0));
if
beta3(minSite) > y0
flag
=
0;
end
end
if
y0 > uplow
%
alpha4,beta4:上边界
[minValue
minSite] = min(abs(alpha4 - x0));
if
beta4(minSite) + theta05/2 <= y0
flag
=
0;
end
end
if
flag == 1
NboweiRow
=
NboweiRow + 1;
plot(x,real(y1));
plot(x,real(y2));
pause(0.01)
BoweiNumber
=
BoweiNumber + 1;
arr_x0((m-1)*2+1,round(Mx/2)-n+1)
=
x0;
arr_y0((m-1)*2+1,round(Mx/2)-n+1)
=
y0;
end
end
arr_NboweiRow(
(m-1)*2 + 1 ) = arr_NboweiRow( (m-1)*2 + 1 ) + NboweiRow;
end
%----------------------偶数行-------------------------------
m
=
0;
for
y0 = lowest+theta05/2+0.866*theta05 : 2*0.866*theta05 : upest
m
=
m + 1;
n
=
0;
NboweiRow
=
0;
for
x0 = theta05/2:theta05:rightest
n
=
n + 1;
x
=
(-theta05/2:0.001:theta05/2) + x0;
y1
=
sqrt((theta05/2)^2 - (x - x0).^2) + y0;
y2
=
-sqrt((theta05/2)^2 - (x - x0).^2) + y0;
%
alpha2,beta2:右边界
flag
=
0;
[minValue
minSite] = min(abs(beta2 - y0));
if
alpha2(minSite) + theta05/2 >= x0
flag
=
1;
end
if
y0 < lowup
%
alpha3,beta3:下边界
[minValue
minSite] = min(abs(alpha3 - x0));
if
beta3(minSite) > y0
flag
=
0;
end
end
if
y0 > uplow
%
alpha4,beta4:上边界
[minValue
minSite] = min(abs(alpha4 - x0));
if
beta4(minSite) + theta05/2 <= y0
flag
=
0;
end
end
if
flag == 1
NboweiRow
=
NboweiRow + 1;
plot(x,real(y1));
plot(x,real(y2));
pause(0.01)
BoweiNumber
=
BoweiNumber + 1;
arr_x0(m*2,round(Mx/2)+n+1)
=
x0;
arr_y0(m*2,round(Mx/2)+n+1)
=
y0;
end
end
arr_NboweiRow(
m*2 ) = NboweiRow;
end
m
=
0;
for
y0 = lowest+theta05/2+0.866*theta05 : 2*0.866*theta05 : upest
m
=
m + 1;
n
=
0;
NboweiRow
=
0;
for
x0 = -theta05/2:-theta05:leftest
n
=
n + 1;
x
=
(-theta05/2:0.001:theta05/2) + x0;
y1
=
sqrt((theta05/2)^2 - (x - x0).^2) + y0;
y2
=
-sqrt((theta05/2)^2 - (x - x0).^2) + y0;
%
alpha1,beta1:左边界
flag
=
0;
[minValue
minSite] = min(abs(beta1 - y0));
if
alpha1(minSite) - theta05/2 <= x0
flag
=
1;
end
if
y0 < lowup
%
alpha3,beta3:下边界
[minValue
minSite] = min(abs(alpha3 - x0));
if
beta3(minSite) > y0
flag
=
0;
end
end
if
y0 > uplow
%
alpha4,beta4:上边界
[minValue
minSite] = min(abs(alpha4 - x0));
if
beta4(minSite) + theta05/2 <= y0
flag
=
0;
end
end
if
flag == 1
NboweiRow
=
NboweiRow + 1;
plot(x,real(y1));
plot(x,real(y2));
pause(0.01)
BoweiNumber
=
BoweiNumber + 1;
arr_x0(m*2,round(Mx/2)-n+1)
=
x0;
arr_y0(m*2,round(Mx/2)-n+1)
=
y0;
end
end
arr_NboweiRow(
m*2 ) = arr_NboweiRow( m*2 ) + NboweiRow;
end
%-----------------------------------------------------
%
figure(2),
%
[b,a] = size(arr_x0);
%
for mm = 1:b;
%
for nn = 1:a
%
plot(arr_x0(mm,nn),arr_y0(mm,nn),’o’,’LineWidth’,2,...
%
’MarkerEdgeColor’,’y’,...
%
’MarkerFaceColor’,’g’,...
%
’MarkerSize’,10);
%
axis([leftest rightest lowest upest]);hold on;
%
end
%
end
%
title(’波位示意图’);
BoweiNumber
=
BoweiNumber
%-----------------------------------------------------
%雷达站坐标系下的波束分布
theta
=
thetaT*pi/180;
[row,collum]
=
size(arr_x0);
arr_alpha
=
zeros(row,collum);
arr_beta
=
zeros(row,collum);
for
mm = 1:row
for
nn = 1:collum
Tx
=
arr_x0(mm,nn);
Ty
=
arr_y0(mm,nn);
temp
=
sqrt(1 - Tx^2 - Ty^2);
arr_beta(mm,nn)
=
asin(Ty*cos(theta) + temp*sin(theta));
arr_alpha(mm,nn)
=
asin(Tx/cos(arr_beta(mm,nn)));
end
end
arr_beta
=
arr_beta*180/pi; %波位方位角
arr_alpha
=
arr_alpha*180/pi ; %波位俯仰角
arr_NboweiRow;
%每一行的波位个数
return;
%
=
=========================================================================
3 仿真结果
4 参考文献
[1]魏鑫, 魏俊杰, 柏佳. 低空复杂环境下雷达目标检测的Matlab算法实现[J]. 无线互联科技, 2019, 16(17):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
