---
This commit is contained in:
188
main.m
188
main.m
@@ -1,8 +1,8 @@
|
||||
clear;
|
||||
clc;
|
||||
close all;
|
||||
clear;
|
||||
clc;
|
||||
close all;
|
||||
%% <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
Time = 2; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
Time = 2; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
c = 3e8;
|
||||
Gr = 1;
|
||||
% λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
@@ -16,19 +16,19 @@ Gr = 1;
|
||||
% 34.45,108.5,0;
|
||||
% ];%Ŀ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
||||
station = [31.2304, 121.4737,0;
|
||||
31.5200, 121.6400,0
|
||||
];
|
||||
31.5200, 121.6400,0
|
||||
];
|
||||
Target = [31.2550, 121.4890,0; % Ŀ<EFBFBD><EFBFBD>1 ½
|
||||
31.2800, 121.5200,0; % Ŀ<EFBFBD><EFBFBD>2 ½
|
||||
31.1900, 121.4800,0; % Ŀ<EFBFBD><EFBFBD>3 ½
|
||||
31.2700, 121.5500,0; % Ŀ<EFBFBD><EFBFBD>4 ½
|
||||
31.2000, 121.6000,0; % Ŀ<EFBFBD><EFBFBD>5 ½
|
||||
30.9500, 121.6500,0; % Ŀ<EFBFBD><EFBFBD>6 <EFBFBD><EFBFBD>
|
||||
30.8500, 121.7200,0; % Ŀ<EFBFBD><EFBFBD>7 <EFBFBD><EFBFBD>
|
||||
30.7800, 121.8000,0; % Ŀ<EFBFBD><EFBFBD>8 <EFBFBD><EFBFBD>
|
||||
30.9200, 121.8500,0; % Ŀ<EFBFBD><EFBFBD>9 <EFBFBD><EFBFBD>
|
||||
30.6700, 121.9000,0; % Ŀ<EFBFBD><EFBFBD>10 <EFBFBD><EFBFBD>
|
||||
];
|
||||
31.2800, 121.5200,0; % Ŀ<EFBFBD><EFBFBD>2 ½
|
||||
31.1900, 121.4800,0; % Ŀ<EFBFBD><EFBFBD>3 ½
|
||||
31.2700, 121.5500,0; % Ŀ<EFBFBD><EFBFBD>4 ½
|
||||
31.2000, 121.6000,0; % Ŀ<EFBFBD><EFBFBD>5 ½
|
||||
30.9500, 121.6500,0; % Ŀ<EFBFBD><EFBFBD>6 <EFBFBD><EFBFBD>
|
||||
30.8500, 121.7200,0; % Ŀ<EFBFBD><EFBFBD>7 <EFBFBD><EFBFBD>
|
||||
30.7800, 121.8000,0; % Ŀ<EFBFBD><EFBFBD>8 <EFBFBD><EFBFBD>
|
||||
30.9200, 121.8500,0; % Ŀ<EFBFBD><EFBFBD>9 <EFBFBD><EFBFBD>
|
||||
30.6700, 121.9000,0; % Ŀ<EFBFBD><EFBFBD>10 <EFBFBD><EFBFBD>
|
||||
];
|
||||
num = size(station,1); % <EFBFBD>۲<EFBFBD>վ<EFBFBD><EFBFBD>Ŀ
|
||||
%<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD>
|
||||
fs = 2e6; % <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>Ϊ2MHz
|
||||
@@ -41,86 +41,86 @@ B = 2e5; %
|
||||
% PRI = {[min,max],'mode'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SLI <EFBFBD><EFBFBD><EFBFBD>뻬<EFBFBD>䷶Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
% RF = {<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<EFBFBD>仯<EFBFBD><EFBFBD>Χ,'mode'};%<EFBFBD>ݱ<EFBFBD>ģʽ
|
||||
|
||||
%-------------------------Station 1-------------------------%
|
||||
%-------------------------Station 1-------------------------%
|
||||
Station(1).Pos = lla2ecef([31.2304, 121.4737,0])'; % <EFBFBD>۲<EFBFBD>վ1λ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>pdw
|
||||
%-------------------------Station 2-------------------------%
|
||||
%-------------------------Station 2-------------------------%
|
||||
Station(2).Pos = lla2ecef([ 31.5200, 121.6400,0])'; % <EFBFBD>۲<EFBFBD>վ1λ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>λ
|
||||
|
||||
%-------------------------Radar 1-------------------------%
|
||||
%-------------------------Radar 1-------------------------%
|
||||
Radar(1).Pos = lla2ecef([31.2550, 121.4890,0])'; % <EFBFBD>״<EFBFBD>1λ<EFBFBD><EFBFBD>
|
||||
Radar(1).PRI = {[1000e-6 ,1500e-6 ,3000e-6],'STA'};%<EFBFBD>β<EFBFBD>
|
||||
Radar(1).Pt = 5.5e3;
|
||||
Radar(1).RF = {1.1 * 10^9 , 0.5*10^9,'Agility'}; % <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RFrange
|
||||
Radar(1).Gt = 10^2.5;
|
||||
Radar(1).Gt = 10^2.5;
|
||||
Radar(1).PW = 5e-6;
|
||||
%-------------------------Radar 2------------------------%
|
||||
Radar(2).Pos = lla2ecef([ 31.2800, 121.5200,0])';
|
||||
Radar(2).Pos = lla2ecef([ 31.2800, 121.5200,0])';
|
||||
% Radar(2).PRI = {[1.6e-3 , 1.8e-3],'SLI'};
|
||||
Radar(2).PRI = {1732e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(2).PRI = {1732e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(2).Pt = 5e3;
|
||||
Radar(2).RF = {1.1 * 10^9,0,'STB'};
|
||||
Radar(2).Gt = 10^3;
|
||||
Radar(2).Gt = 10^3;
|
||||
Radar(2).PW = 3e-6;
|
||||
%-------------------------Radar 3-------------------------%
|
||||
Radar(3).Pos = lla2ecef([31.1900, 121.4800,0])';
|
||||
Radar(3).PRI = {[1800e-6,3800e-6],'SLI'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
%-------------------------Radar 3-------------------------%
|
||||
Radar(3).Pos = lla2ecef([31.1900, 121.4800,0])';
|
||||
Radar(3).PRI = {[1800e-6,3800e-6],'SLI'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Radar(3).Pt = 5e3;
|
||||
Radar(3).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(3).Gt = 10^3;
|
||||
Radar(3).Gt = 10^3;
|
||||
Radar(3).PW = 2e-6;
|
||||
%-------------------------Radar 4-------------------------%
|
||||
Radar(4).Pos = lla2ecef([31.2700, 121.5500,0])';
|
||||
%-------------------------Radar 4-------------------------%
|
||||
Radar(4).Pos = lla2ecef([31.2700, 121.5500,0])';
|
||||
% Radar(4).PRI = {1.7e-3,'STA'};
|
||||
Radar(4).PRI = {2108e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(4).PRI = {2108e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(4).Pt = 5e3;
|
||||
Radar(4).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(4).Gt = 10^3;
|
||||
Radar(4).Gt = 10^3;
|
||||
Radar(4).PW = 4e-6;
|
||||
%-------------------------Radar 5-------------------------%
|
||||
Radar(5).Pos = lla2ecef([ 31.2000, 121.6000,0])';
|
||||
%-------------------------Radar 5-------------------------%
|
||||
Radar(5).Pos = lla2ecef([ 31.2000, 121.6000,0])';
|
||||
% Radar(5).PRI = {1.7e-3,'STA'};
|
||||
Radar(5).PRI = {[5500e-6,4500e-6,3500e-6],'AGI'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(5).PRI = {[5500e-6,4500e-6,3500e-6],'AGI'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(5).Pt = 5e3;
|
||||
Radar(5).RF = {4* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(5).Gt = 10^3;
|
||||
Radar(5).Gt = 10^3;
|
||||
Radar(5).PW = 3e-6;
|
||||
%-------------------------Radar 6-------------------------%
|
||||
Radar(6).Pos = lla2ecef([30.9500, 121.6500,0])';
|
||||
Radar(6).PRI = {1100e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
%-------------------------Radar 6-------------------------%
|
||||
Radar(6).Pos = lla2ecef([30.9500, 121.6500,0])';
|
||||
Radar(6).PRI = {1100e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(6).Pt = 5e3;
|
||||
Radar(6).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(6).Gt = 10^3;
|
||||
Radar(6).Gt = 10^3;
|
||||
Radar(6).PW = 3e-6;
|
||||
%-------------------------Radar 7-------------------------%
|
||||
Radar(7).Pos = lla2ecef([ 30.8500, 121.7200,0])';
|
||||
Radar(7).PRI = {2489e-6,'JTR'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
%-------------------------Radar 7-------------------------%
|
||||
Radar(7).Pos = lla2ecef([ 30.8500, 121.7200,0])';
|
||||
Radar(7).PRI = {2489e-6,'JTR'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Radar(7).Pt = 5e3;
|
||||
Radar(7).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(7).Gt = 10^3;
|
||||
Radar(7).Gt = 10^3;
|
||||
Radar(7).PW = 6e-6;
|
||||
%-------------------------Radar 8-------------------------%
|
||||
Radar(8).Pos = lla2ecef([30.7800, 121.8000,0])';
|
||||
Radar(8).PRI = {2763e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
%-------------------------Radar 8-------------------------%
|
||||
Radar(8).Pos = lla2ecef([30.7800, 121.8000,0])';
|
||||
Radar(8).PRI = {2763e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(8).Pt = 5e3;
|
||||
Radar(8).RF = {3* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(8).Gt = 10^3;
|
||||
Radar(8).Gt = 10^3;
|
||||
Radar(8).PW = 9e-6;
|
||||
%-------------------------Radar 9-------------------------%
|
||||
Radar(9).Pos = lla2ecef([30.9200, 121.8500,0])';
|
||||
Radar(9).PRI = {1377e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
%-------------------------Radar 9-------------------------%
|
||||
Radar(9).Pos = lla2ecef([30.9200, 121.8500,0])';
|
||||
Radar(9).PRI = {1377e-6,'STB'};%<EFBFBD>̶<EFBFBD>
|
||||
Radar(9).Pt = 5e3;
|
||||
Radar(9).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(9).Gt = 10^3;
|
||||
Radar(9).Gt = 10^3;
|
||||
Radar(9).PW = 3e-6;
|
||||
%-------------------------Radar 10-------------------------%
|
||||
Radar(10).Pos = lla2ecef([ 30.6700, 121.9000,0])';
|
||||
Radar(10).PRI = {2918e-6,'JTR'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
%-------------------------Radar 10-------------------------%
|
||||
Radar(10).Pos = lla2ecef([ 30.6700, 121.9000,0])';
|
||||
Radar(10).PRI = {2918e-6,'JTR'};%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Radar(10).Pt = 5e3;
|
||||
Radar(10).RF = {5.1* 10^9,0.6*10^9,'Agility'};
|
||||
Radar(10).Gt = 10^3;
|
||||
Radar(10).Gt = 10^3;
|
||||
Radar(10).PW = 1e-6;
|
||||
%% PDW<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
||||
StationNumber = size(station,1); % <EFBFBD>۲<EFBFBD>վ<EFBFBD><EFBFBD>Ŀ
|
||||
StationNumber = size(station,1); % <EFBFBD>۲<EFBFBD>վ<EFBFBD><EFBFBD>Ŀ
|
||||
RadarNumber = length(Radar);
|
||||
RF = [];
|
||||
TOA = [];
|
||||
@@ -138,56 +138,56 @@ for i = 1:RadarNumber
|
||||
propagationtime(i) = propagation_time(Radar(i).Pos , Station(1).Pos);
|
||||
[TOA_ori, RadarPDW(i).PRI] = PRI_Generate3(Radar(i).PRI{2},Time,Radar(i).PRI{1});
|
||||
RadarPDW(i).TOA = (TOA_ori + propagationtime(i))';%<EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RadarPDW(i).PulseNum = length(RadarPDW(i).TOA);
|
||||
%PRI
|
||||
RadarPDW(i).PRI = RadarPDW(i).PRI';
|
||||
RadarPDW(i).PRI = RadarPDW(i).PRI + RadarPDW(i).PRI .* randn(RadarPDW(i).PulseNum,1) * 0.01;
|
||||
RadarPDW(i).PRI = RadarPDW(i).PRI + RadarPDW(i).PRI .* randn(RadarPDW(i).PulseNum,1) * 0.01;
|
||||
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RadarPDW(i).PulseNum = length(RadarPDW(i).TOA);
|
||||
|
||||
[station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(1,:),Target(i,:));
|
||||
RadarPDW(i).DOA = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0]); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA = RadarPDW(i).DOA + randn(RadarPDW(i).PulseNum,1) / 1000;
|
||||
|
||||
[station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(2,:),Target(i,:)); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA(:,2) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0]); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA(:,2)= RadarPDW(i).DOA(:,2) + randn(RadarPDW(i).PulseNum,1) / 1000;
|
||||
|
||||
% for j = 1 : StationNumber
|
||||
% [station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(j,:),Target(i,:)); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
% RadarPDW(i).DOA(:,j) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0])+rand(); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
% RadarPDW(i).DOA(:,j)= norm(RadarPDW(i).DOA(:,j)) + randn(RadarPDW(i).PulseNum,1) / 10;
|
||||
% end
|
||||
|
||||
|
||||
[station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(1,:),Target(i,:));
|
||||
RadarPDW(i).DOA = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0]); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA = RadarPDW(i).DOA + randn(RadarPDW(i).PulseNum,1) / 1000;
|
||||
|
||||
[station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(2,:),Target(i,:)); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA(:,2) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0]); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).DOA(:,2)= RadarPDW(i).DOA(:,2) + randn(RadarPDW(i).PulseNum,1) / 1000;
|
||||
|
||||
% for j = 1 : StationNumber
|
||||
% [station1_enu(1,1) ,station1_enu(1,2) , station1_enu(1,3)]= lla2enu(station(j,:),Target(i,:)); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
% RadarPDW(i).DOA(:,j) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0])+rand(); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ƕ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>DOA<EFBFBD><EFBFBD>
|
||||
% RadarPDW(i).DOA(:,j)= norm(RadarPDW(i).DOA(:,j)) + randn(RadarPDW(i).PulseNum,1) / 10;
|
||||
% end
|
||||
|
||||
%<EFBFBD><EFBFBD>ƵRF
|
||||
RadarPDW(i).RF = (RF_Generate(Radar(i).RF{3},Radar(i).RF{1},RadarPDW(i).PulseNum,Radar(i).RF{2}))';
|
||||
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Pr
|
||||
% <EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>˥<EFBFBD><EFBFBD>
|
||||
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Pr
|
||||
% <EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>˥<EFBFBD><EFBFBD>
|
||||
RadarPDW(i).Pt = Radar(i).Pt + Radar(i).Pt * randn(RadarPDW(i).PulseNum,1) * 0.001;
|
||||
R(i) = norm(Radar(i).Pos - Station(1).Pos); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
lambda = c ./ RadarPDW(i).RF;
|
||||
RadarPDW(i).Pr = Radar(i).Pt.*lambda.^2*Radar(i).Gt*Gr/(4*pi*R(i))^2;
|
||||
%PA
|
||||
RadarPDW(i).Pr = Radar(i).Pt.*lambda.^2*Radar(i).Gt*Gr/(4*pi*R(i))^2;
|
||||
%PA
|
||||
RadarPDW(i).PA = sqrt(RadarPDW(i).Pr);
|
||||
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PW
|
||||
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PW
|
||||
RadarPDW(i).PW = Radar(i).PW + Radar(i).PW * randn(RadarPDW(i).PulseNum,1) * 0.01;
|
||||
% <EFBFBD><EFBFBD>ǩ
|
||||
RadarPDW(i).Label = ones(RadarPDW(i).PulseNum,1) * i;
|
||||
%<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> 'LFM''NLFM''DPSK''simple'
|
||||
mode = {'LFM','NLFM','DPSK','simple'};
|
||||
mode_index = randi([1, length(mode)]);
|
||||
Wave_mode = mode(mode_index);
|
||||
% RadarPDW(i).Waveform = Waveform_Generate(fs,T ,f0,B, 'Wave_mode');
|
||||
% %% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
% RF = [RF;RadarPDW(i).RF];
|
||||
% TOA = [TOA;RadarPDW(i).TOA];
|
||||
% PRI = [PRI;RadarPDW(i).PRI];
|
||||
% DOA = [DOA;RadarPDW(i).DOA]
|
||||
% PA = [PA;RadarPDW(i).PA];
|
||||
% Pr = [Pr; RadarPDW(i).Pr];
|
||||
% PW = [PW; RadarPDW(i).PW];
|
||||
% Label = [Label;RadarPDW(i).Label];
|
||||
% <EFBFBD><EFBFBD>ǩ
|
||||
RadarPDW(i).Label = ones(RadarPDW(i).PulseNum,1) * i;
|
||||
%<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> 'LFM''NLFM''DPSK''simple'
|
||||
mode = {'LFM','NLFM','DPSK','simple'};
|
||||
mode_index = randi([1, length(mode)]);
|
||||
Wave_mode = mode(mode_index);
|
||||
% RadarPDW(i).Waveform = Waveform_Generate(fs,T ,f0,B, 'Wave_mode');
|
||||
% %% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
% RF = [RF;RadarPDW(i).RF];
|
||||
% TOA = [TOA;RadarPDW(i).TOA];
|
||||
% PRI = [PRI;RadarPDW(i).PRI];
|
||||
% DOA = [DOA;RadarPDW(i).DOA]
|
||||
% PA = [PA;RadarPDW(i).PA];
|
||||
% Pr = [Pr; RadarPDW(i).Pr];
|
||||
% PW = [PW; RadarPDW(i).PW];
|
||||
% Label = [Label;RadarPDW(i).Label];
|
||||
|
||||
end
|
||||
|
||||
|
||||
38
main.py
38
main.py
@@ -337,11 +337,11 @@ def _(locate, radar_pdws):
|
||||
return (radar_pdws_located,)
|
||||
|
||||
|
||||
@app.cell
|
||||
def _(lla2enu, np, stations):
|
||||
app._unparsable_cell(
|
||||
r"""
|
||||
def locate(radar_pdws):
|
||||
# values = sci.io.loadmat("radar_pdws.mat")
|
||||
# radar_pdws = values["radar_pdws"]
|
||||
# values = sci.io.loadmat(\"radar_pdws.mat\")
|
||||
# radar_pdws = values[\"radar_pdws\"]
|
||||
# print(len(radar_pdws))
|
||||
stations_enu = np.empty((len(stations),3))
|
||||
for i in range(len(stations)):
|
||||
@@ -352,15 +352,15 @@ def _(lla2enu, np, stations):
|
||||
location_estimated = np.empty((len(doa),3))
|
||||
for j in range(len(doa)):
|
||||
ned = least_square(doa[j],stations_enu[:,0],stations_enu[:,1])
|
||||
# lat,lon,_ = ned2lla(ned[0],ned[1],0,*stations[0].lla)
|
||||
# erro[j] = distance(targets[0].lla[0],targets[0].lla[1],lat,lon)
|
||||
# location_estimated[j,:] = np.array([lat,lon,0])
|
||||
lat,lon,_ = ned2lla(ned[0],ned[1],0,*stations[0].lla)
|
||||
erro[j] = distance(targets[0].lla[0],targets[0].lla[1],lat,lon)
|
||||
location_estimated[j,:] = np.array([lat,lon,0])
|
||||
|
||||
# radar_pdws[i].location = np.empty((len(radar_pdws[i].pri),3))
|
||||
# radar_pdws[i].erro = np.empty(len(radar_pdws[i].pri))
|
||||
# for j in range(len(radar_pdws[i].pri)):
|
||||
# radar_pdws[i].location[j,:] = location_estimated[j,:]
|
||||
# radar_pdws[i].erro[j] = erro[j]
|
||||
radar_pdws[i].location = np.empty((len(radar_pdws[i].pri),3))
|
||||
radar_pdws[i].erro = np.empty(len(radar_pdws[i].pri))
|
||||
for j in range(len(radar_pdws[i].pri)):
|
||||
radar_pdws[i].location[j,:] = location_estimated[j,:]
|
||||
radar_pdws[i].erro[j] = erro[j]
|
||||
return radar_pdws
|
||||
|
||||
def least_square(doa,e,n):
|
||||
@@ -372,11 +372,13 @@ def _(lla2enu, np, stations):
|
||||
hmtx = np.hstack((-np.tan(doa_rad).T,np.ones((l,1))))
|
||||
ned = np.linalg.inv(hmtx.T @ hmtx) @ hmtx.T @ fmtx.T #确定是ned?
|
||||
return ned.flat
|
||||
return least_square, locate
|
||||
""",
|
||||
name="_"
|
||||
)
|
||||
|
||||
|
||||
@app.cell
|
||||
def _(np):
|
||||
def _(dist, np):
|
||||
import pyproj
|
||||
import scipy.spatial.transform
|
||||
from scipy.spatial.transform import Rotation as R
|
||||
@@ -403,7 +405,7 @@ def _(np):
|
||||
# 进行坐标转换
|
||||
x, y, z = transformer.transform(lat, lon, alt, radians=False)
|
||||
return x, y, z
|
||||
|
||||
#TODO:提升效率
|
||||
def lla2enu(lat, lon, alt, lat_org, lon_org, alt_org):
|
||||
"""
|
||||
将 LLA 坐标转换为 ENU 坐标
|
||||
@@ -441,7 +443,7 @@ def _(np):
|
||||
enu = rot_matrix.dot(ecef_delta)
|
||||
|
||||
return enu
|
||||
|
||||
#TODO:提升效率
|
||||
def enu2lla(x, y, z, lat_org, lon_org, alt_org):
|
||||
"""
|
||||
将 ENU 坐标转换为 LLA 坐标
|
||||
@@ -489,8 +491,12 @@ def _(np):
|
||||
lla = enu2lla(e, n, -d,lat0,lon0,alt0)
|
||||
return lla[0],lla[1],lla[2]
|
||||
|
||||
#TODO:要和matlab中的distance实现一致
|
||||
def distance(lat1, lon1, lat2, lon2):
|
||||
return geodesic((lat1, lon1), (lat2, lon2)).miles #.kilometers
|
||||
# geod = pyproj.Geod(ellps="WGS84") # 使用 WGS84 椭球体
|
||||
# _, _, dist = geod.inv(lon1, lat1, lon2, lat2) # 计算距离
|
||||
return dist
|
||||
|
||||
# def haversine_distance(lat1, lon1, lat2, lon2):
|
||||
# """
|
||||
|
||||
Reference in New Issue
Block a user