2018華為杯E題的一些思考和三維模型圖繪圖技巧總結
阿新 • • 發佈:2018-12-21
2018華為杯全國研究生數學建模E題:多無人機對組網雷達的協同干擾。第一部分先對賽題中幾個概念做出明確解釋!第二部分主要是模型需要使用的一些繪圖技巧總結。
1.賽題背景:
干擾機以"距離假目標欺騙"的方式來實施對地面組網雷達系統進行有效干擾。
注:干擾機基於偵察到的敵方雷達發射電磁波的訊號特徵,對其進行相應處理後,延遲(或導前)一定時間後再發射出去,使雷達接收到一個或多個比該目標真實距離靠後(或靠前)的回波訊號。一般虛假航跡點比真實幹擾機位置要遠遠靠後。
注:形成一條虛假航跡的起始和終止時刻的干擾機飛行軌跡和位置,以及干擾機產生的虛假航跡。
注:為方便理解這裡對上面兩張圖再細化一下,給出不同飛行策略下的幾條疑似虛假航跡的概念位置:
1.1.博弈雙方:
紅方:干擾機;
藍方:地面組網雷達系統(5部);
1.2.何為"有效干擾"?
即5部雷達中至少有3部雷達同一時刻解算出的目標空間位置是相同的,融合中心就將其確定為一個合理的航跡點(即:為同源),20個連續的經融合中心確認的航跡點形成的合理航跡,將被組網雷達系統視為一條真實的目標航跡。
1.3.假目標點(目標航跡點資訊)的實質是什麼?
20個時刻,第t時刻m(m>=3)架次干擾機與地面n(n>=3)個雷達的連線的延長線的交點。
1.4."組網雷達資訊融合中心"幹一件什麼事情?
基於一定的融合規則判斷一個合理的目標航跡點,多個連續的合理目標航跡點就形成了目標航跡,即融合出一條疑似目標的有效軌跡(即:干擾機形成的干擾虛假航跡)
1.5.融合規則是什麼?
20個時刻,第t時刻m架次干擾機與地面n個雷達中的m個的連線的延長線要產生公共交點(即:虛假航跡點),詳見(圖5 t時刻5架次干擾機與5部雷達連線的延長線共交點)。通過協同控制無人機的飛行航跡,可在敵方的組網雷達系統中形成一條或多條欺騙干擾航跡,迫使敵方加強空情處置,達到欺騙目的。
1.6.干擾機和地面組網雷達的博弈關係如下,本質上是一個分段函式:假定m為干擾機數目,n為地面雷達數目。(m=1,2,3,4,5; n=1,2,3,4,5) 。博弈的結果使用F(m,n)表示。
1.7.干擾機群中中心無人機在那裡合適?中心無人機的排程策略是什麼?
不是很清楚,略!正在等待一等獎論文揭開謎底。
2.模型需要使用的一些繪圖技巧總結
2.1. 干擾機群產生一個虛假航跡點的三維繪圖實現:
%% 1.畫出三維空間中相交的三條直線相較於同一個軌跡點 pp=[80,0,0;30,60,0;55,110,0;105,110,0;130,60,0] %雷達座標(單位:km) p1=[60.6,69.982,69.982]; %軌跡點 % for i=1:5 hold on for i=1:5 k=0:0.01:1; p2=pp(i,:); hold on; %% 這裡是實現三維相交直線相交的關鍵!!! x=p1(1)+k*(p2(1)-p1(1)); y=p1(2)+k*(p2(2)-p1(2)); z=p1(3)+k*(p2(3)-p1(3)); plot3(x,y,z) text(p2(1,1),p2(1,2),p2(1,3),['雷達',num2str(i)]) end hold on; plot3(60.6,69.982,69.982,'b^','MarkerSize',10,'MarkerFacecolor','b'); plot3(pp(1:5,1),pp(1:5,2),pp(1:5,3),'rp','MarkerSize',10,'MarkerFacecolor','r') text(60.6,69.982,69.982,'軌跡點At1') xlabel('x軸(km)'); ylabel('y軸(km)'); zlabel('z軸(km)'); title(['第1時刻軌跡點與',num2str(i),'個雷達的位置分析']) view([-45,45]) %% 2.畫出靛青色截平面,並標註截平面與連線的交點 zz=ones(130,130)*2; % zz = z1/3000; hold on; x1=1:1:130; y1=1:1:130; %mesh(x1,y1,zz,'EdgeColor','w','FaceColor','w','MarkerEdgecolor','w','MarkerFacecolor','w'); mesh(x1,y1,zz,'EdgeColor','c','FaceColor','c','MarkerEdgecolor','c','MarkerFacecolor','c'); axis([1 130 1 130 1 70]) % 畫出軌跡1到5個雷達點的效果圖 guiji1x=[77713.73,29142.67,53428.2,101999.26,126284.79]; guiji1y=[1731.87,60017.15,108588.21,108588.21,60017.15]; guiji1z=ones(5,1)*2100; %座標轉換為km hold on; plot3(guiji1x'/1000,guiji1y/1000,guiji1z/1000,'r*','MarkerSize',10,'MarkerFacecolor','r'); for i=1:5 text(guiji1x(i)'/1000,guiji1y(i)/1000,guiji1z(i)/1000+1.5,['截點',num2str(i)]) end xlabel('x軸(km)'); ylabel('y軸(km)'); zlabel('z軸(km)'); title('第1時刻擷取五稜錐的5條稜的截點位置分析') view([-45,45])
2.2.畫出20個已知軌跡點與組網雷達的三維空間中的連線及延長線交點:
%% 在同一幅圖上畫出20個軌跡點
data= xlsread('D:\Program Files\MATLAB\workspace\E2018\F1_guiji.xls');
%軌跡單位是m
guiji=[data(:,2),data(:,3),data(:,3)]
guiji=guiji/1000;
pp=[80,0,0;30,60,0;55,110,0;105,110,0;130,60,0]
for j=1:20
p1=guiji(j,:);%軌跡點
for i=1:5
k=0:0.01:1;
p2=pp(i,:); %5臺無人機
hold on;
x=p1(1)+k*(p2(1)-p1(1));
y=p1(2)+k*(p2(2)-p1(2));
z=p1(3)+k*(p2(3)-p1(3));
plot3(x,y,z)
end
end
2.3.以上所有程式碼疊加的效果圖
2.4.一些更好看的三維立體效果模擬
為了更加美觀為與不同雷達相連的連線著色
data= xlsread('D:\Program Files\MATLAB\workspace\E2018\F1_guiji.xls');
%軌跡單位是m
guiji=[data(:,2),data(:,3),data(:,3)]
guiji=guiji/1000;
Falsetarget=guiji;
radar = zeros(5,3);
radar(1,1)= 80;
radar(2,1) = 30; radar(2,2) = 60;
radar(3,1) = 55; radar(3,2) = 110;
radar(4,1) = 105; radar(4,2) = 110;
radar(5,1) = 130; radar(5,2) = 60;
radar = radar*1000;
%% 繪圖
plot3(Falsetarget(:,1),Falsetarget(:,2),Falsetarget(:,3),'ro','MarkerFaceColor',[1 0 0]);
grid on
hold on
plot3(radar(:,1),radar(:,2),radar(:,3),'^','MarkerSize',10,...
'MarkerEdgeColor','r',...
'MarkerFaceColor',[1 0 0]);
for i = 1:5
text(radar(i,1)+10,radar(i,2),radar(i,3),['雷達' num2str(i)]);
end
for i = 1:5
for j = 1:20
if i == 1
plot3([radar(i,1),Falsetarget(j,1)],[radar(i,2),Falsetarget(j,2)],[radar(i,3),Falsetarget(j,3)],'b');
end
if i == 2
plot3([radar(i,1),Falsetarget(j,1)],[radar(i,2),Falsetarget(j,2)],[radar(i,3),Falsetarget(j,3)],'r');
end
if i == 3
plot3([radar(i,1),Falsetarget(j,1)],[radar(i,2),Falsetarget(j,2)],[radar(i,3),Falsetarget(j,3)],'m');
end
if i == 4
plot3([radar(i,1),Falsetarget(j,1)],[radar(i,2),Falsetarget(j,2)],[radar(i,3),Falsetarget(j,3)],'k');
end
if i == 5
plot3([radar(i,1),Falsetarget(j,1)],[radar(i,2),Falsetarget(j,2)],[radar(i,3),Falsetarget(j,3)],'g');
end
end
end
x = 0:1000:150000;
y = 0:1000:150000;
size(x,2)
mesh(x,y,ones(size(x,2),size(y,2))*2250,'EdgeColor','c','FaceColor','c','MarkerEdgecolor','c','MarkerFacecolor','c');
xlabel('X(單位:m)');
ylabel('Y(單位:m)');
zlabel('Z(單位:m)');
title('組網雷達與虛假目標航跡點連線')
hold off
2.5.組網雷達地面覆蓋範圍
data= xlsread('D:\Program Files\MATLAB\workspace\E2018\F1_guiji.xls');
%軌跡單位是m
guiji=[data(:,2),data(:,3),data(:,3)]
%% 2018-9-18畫圖。
%% 新增5個雷達
Falsetarget=guiji;
radar = zeros(5,3);
radar(1,1)= 80;
radar(2,1) = 30; radar(2,2) = 60;
radar(3,1) = 55; radar(3,2) = 110;
radar(4,1) = 105; radar(4,2) = 110;
radar(5,1) = 130; radar(5,2) = 60;
radar = radar*1000;
%% 繪圖
%plot3(Falsetarget(:,1),Falsetarget(:,2),Falsetarget(:,3),'ro','MarkerFaceColor',[1 0 0]);
grid on
hold on
plot3(radar(:,1),radar(:,2),radar(:,3),'^','MarkerSize',10,...
'MarkerEdgeColor','r',...
'MarkerFaceColor',[1 0 0]);
for i = 1:5
text(radar(i,1)+10,radar(i,2),radar(i,3),['雷達' num2str(i)]);
end
2.6.問題一(使用空間解析結合嘗試求解)
使用截平面法指定z的高度,使用直線的點法式公式來求取干擾機的位置座標。這裡可以使用matlab很好用的命令subs自動帶入已經存在的引數值加以計算,同時使用eval()將帶入數值的syms表示式的結果轉化為具體數值。
%% h=2322.8m去擷取雷達1,2,3
%軌跡單位為m
guiji= xlsread('D:\Program Files\MATLAB\workspace\E2018\F1_guiji.xls');
guiji=guiji(:,2:4)
leidazuobiao=[80000,0,0;30000,60000,0;55000,110000,0;105000,110000,0;130000,60000,0]
%% 求取截面座標
Path2000X=cell(20,3);
Path2000Y=cell(20,3);
gaodu=[2322.8]
for j=1:length(guiji)%僅僅考慮一個軌跡點
for i=1:3
% a(j,i)=guiji(j,1)-leidazuobiao(i,1);
% b(j,i)=guiji(j,2)-leidazuobiao(i,2);
% c(j,i)=guiji(j,3)-leidazuobiao(i,3);
%使用直線的點法式公式
%Lji:(x-guiji(i,1))/a(j,i)=(y-guiji(i,2))/b(j,i)=(z-guiji(i,3))/c(j,i)
syms x y h x0 y0 z0 a0 b0 c0;
x=x0+a0*(h-z0)/c0;
y=y0+b0*(h-z0)/c0;
a0=guiji(j,1)-leidazuobiao(i,1)
b0=guiji(j,2)-leidazuobiao(i,2)
c0=guiji(j,3)-leidazuobiao(i,3)
x0=guiji(i,1)
y0=guiji(i,2)
z0=guiji(i,3)
%high=min(guiji(:,3)) ;%63.9570km;但是無人機飛行高度在2000-2500m
h=gaodu(1) %h=2000m
y1=subs(x)
y2=subs(y)
disp('==========')
Path2000X{j,i}= eval(y1) %將syms轉化為數值
Path2000Y{j,i}= eval(y2)
end
end
%% 對2,3雷達處的20個座標分別再以4個點依次擬合出來直線個5條。那麼我一共是有10條無人機飛行的直線
%4個一組作直線擬合
XX=[Path2000X{:,2}]'
YY=[Path2000Y{:,2}]'
XX1=[Path2000X{1:4,2}]'
YY1=[Path2000Y{1:4,2}]'
YY2=[Path2000Y{5:8,2}]'
XX2=[Path2000X{5:8,2}]'
XX3=[Path2000X{9:12,2}]'
YY3=[Path2000Y{9:12,2}]'
XX4=[Path2000X{13:16,2}]'
YY4=[Path2000Y{13:16,2}]'
YY5=[Path2000Y{17:20,2}]'
XX5=[Path2000X{17:20,2}]'
%
XX1=[Path2000X{1:4,3}]'
YY1=[Path2000Y{1:4,3}]'
YY2=[Path2000Y{5:8,3}]'
XX2=[Path2000X{5:8,3}]'
XX3=[Path2000X{9:12,3}]'
YY3=[Path2000Y{9:12,3}]'
XX4=[Path2000X{13:16,3}]'
YY4=[Path2000Y{13:16,3}]'
YY5=[Path2000Y{17:20,3}]'
XX5=[Path2000X{17:20,3}]'
%%
clear PPPPPPPPPPPPPPPo1
PPPPPPPPPPPPPPPo1= xlsread('D:\Program Files\MATLAB\workspace\E2018\CC2.xlsx','sheet2','A1:BI4');
PPPPPPPPPPPPPPPo1=round(PPPPPPPPPPPPPPPo1,1)
xlswrite('D:\zhou.xlsx',PPPPPPPPPPPPPPPo1,'sheet1','A1:BI4');
2.7.答案格式拼接
拼湊如下圖所示格式的答案,無人機架次及20個時刻對應的X,Y,Z座標。
%% 填寫答案,構造答案表格
%''是matlab中字元陣列,寫入的是單個的漢字而不是字串,使用cell就是字串了
% str0='無人機編號';
% xlswrite('D:\zhou.xlsx',str0,'sheet1','A1');
%寫入第一行
str1=cell(1,61);%matlab中字串處理用cell會很方便,每個字串是一個物件,leng(str1)=1
str1{1,1}='無人機編號';
str2={'x','y','z'}
for i=1:20
for j=1:3
str1{1,3*(i-1)+j+1}=['第',num2str(i),'個時刻空間位置',str2{j},'座標值'];
end
end
xlswrite('D:\zhou.xlsx',str1,'sheet1','A1:BI1');
%寫入編號
num1=1:1:5;
num1=num1';%轉換為列向量
xlswrite('D:\zhou.xlsx',num1,'sheet1','A2');
%將答案寫入到統一個格式cell中
AAA=jiemian_mute{1,1}';
BBB=jiemian_mute{1,2}';
for i=1:5
for j=1:20
daan{i,3*(j-1)+1}=AAA{i,j};
daan{i,3*(j-1)+2}=BBB{i,j};
daan{i,3*(j-1)+3}=2000;
end
end
xlswrite('D:\zhou.xlsx',daan,'sheet1','B2:BI6');