199 lines
7.9 KiB
Matlab
199 lines
7.9 KiB
Matlab
clear;
|
||
clc;
|
||
close all;
|
||
%% 初始化
|
||
Time = 2; %仿真时间
|
||
c = 3e8;
|
||
Gr = 1;
|
||
% 位置信息
|
||
% station = [34.256,108.2,0;
|
||
% 34.256,108.4,0
|
||
% ];%观测站位置
|
||
% Target = [34.45,108.3,0;
|
||
% 34.55,108.3,0;
|
||
% 34.35,108.3,0;
|
||
% 34.25,108.7,0;
|
||
% 34.45,108.5,0;
|
||
% ];%目标位置
|
||
station = [31.2304, 121.4737,0;
|
||
31.5200, 121.6400,0
|
||
];
|
||
Target = [31.2550, 121.4890,0; % 目标1 陆
|
||
31.2800, 121.5200,0; % 目标2 陆
|
||
31.1900, 121.4800,0; % 目标3 陆
|
||
31.2700, 121.5500,0; % 目标4 陆
|
||
31.2000, 121.6000,0; % 目标5 陆
|
||
30.9500, 121.6500,0; % 目标6 海
|
||
30.8500, 121.7200,0; % 目标7 海
|
||
30.7800, 121.8000,0; % 目标8 海
|
||
30.9200, 121.8500,0; % 目标9 海
|
||
30.6700, 121.9000,0; % 目标10 海
|
||
];
|
||
num = size(station,1); % 观测站数目
|
||
%波形参数
|
||
fs = 2e6; % 采样频率为2MHz
|
||
T = 1e-3; % 信号持续时间为1ms
|
||
f0 = 1e6;
|
||
B = 2e5; % 调频带宽为200kHz
|
||
%PRI_Generate3函数使用说明
|
||
% PRI = {中心值,'mode'};%其余模式输入PRI均值
|
||
% PRI = {[PRI1,PRI2,PRI3],'mode'};%参差模式STA输入几个固定值的数组PRI_values = [ ]
|
||
% PRI = {[min,max],'mode'};%滑变SLI 输入滑变范围的最小值最大值
|
||
% RF = {中心值,变化范围,'mode'};%捷变模式
|
||
|
||
%-------------------------Station 1-------------------------%
|
||
Station(1).Pos = lla2ecef([31.2304, 121.4737,0])'; % 观测站1位置 接收pdw
|
||
%-------------------------Station 2-------------------------%
|
||
Station(2).Pos = lla2ecef([ 31.5200, 121.6400,0])'; % 观测站1位置 定位
|
||
|
||
%-------------------------Radar 1-------------------------%
|
||
Radar(1).Pos = lla2ecef([31.2550, 121.4890,0])'; % 雷达1位置
|
||
Radar(1).PRI = {[1000e-6 ,1500e-6 ,3000e-6],'STA'};%参差
|
||
Radar(1).Pt = 5.5e3;
|
||
Radar(1).RF = {1.1 * 10^9 , 0.5*10^9,'Agility'}; % 第二个系数是RFrange
|
||
Radar(1).Gt = 10^2.5;
|
||
Radar(1).PW = 5e-6;
|
||
%-------------------------Radar 2------------------------%
|
||
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'};%固定
|
||
Radar(2).Pt = 5e3;
|
||
Radar(2).RF = {1.1 * 10^9,0,'STB'};
|
||
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'};%滑变
|
||
Radar(3).Pt = 5e3;
|
||
Radar(3).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||
Radar(3).Gt = 10^3;
|
||
Radar(3).PW = 2e-6;
|
||
%-------------------------Radar 4-------------------------%
|
||
Radar(4).Pos = lla2ecef([31.2700, 121.5500,0])';
|
||
% Radar(4).PRI = {1.7e-3,'STA'};
|
||
Radar(4).PRI = {2108e-6,'STB'};%固定
|
||
Radar(4).Pt = 5e3;
|
||
Radar(4).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||
Radar(4).Gt = 10^3;
|
||
Radar(4).PW = 4e-6;
|
||
%-------------------------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'};%固定
|
||
Radar(5).Pt = 5e3;
|
||
Radar(5).RF = {4* 10^9,0.6*10^9,'Agility'};
|
||
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'};%固定
|
||
Radar(6).Pt = 5e3;
|
||
Radar(6).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||
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'};%抖动
|
||
Radar(7).Pt = 5e3;
|
||
Radar(7).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||
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'};%固定
|
||
Radar(8).Pt = 5e3;
|
||
Radar(8).RF = {3* 10^9,0.6*10^9,'Agility'};
|
||
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'};%固定
|
||
Radar(9).Pt = 5e3;
|
||
Radar(9).RF = {1.8* 10^9,0.6*10^9,'Agility'};
|
||
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'};%抖动
|
||
Radar(10).Pt = 5e3;
|
||
Radar(10).RF = {5.1* 10^9,0.6*10^9,'Agility'};
|
||
Radar(10).Gt = 10^3;
|
||
Radar(10).PW = 1e-6;
|
||
%% PDW参数模拟
|
||
StationNumber = size(station,1); % 观测站数目
|
||
RadarNumber = length(Radar);
|
||
RF = [];
|
||
TOA = [];
|
||
DOA = [];
|
||
Label = [];
|
||
Pr=[];
|
||
PA=[];
|
||
PW=[];
|
||
PRI=[];
|
||
propagationtime=[];
|
||
|
||
for i = 1:RadarNumber
|
||
%到达时间TOA
|
||
%考虑几何关系,根据距离计算延迟
|
||
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))';%加上传播延迟时间
|
||
%脉冲数量
|
||
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).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]); % 计算真实角度模拟测向角度(接收到的DOA)
|
||
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,:)); % 坐标转换
|
||
RadarPDW(i).DOA(:,2) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0]); % 计算真实角度模拟测向角度(接收到的DOA)
|
||
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,:)); % 坐标转换
|
||
% RadarPDW(i).DOA(:,j) = CalculatDoaNorth( [station1_enu(1,1),station1_enu(1,2),station1_enu(1,3)] , [0,0,0])+rand(); % 计算真实角度模拟测向角度(接收到的DOA)
|
||
% RadarPDW(i).DOA(:,j)= norm(RadarPDW(i).DOA(:,j)) + randn(RadarPDW(i).PulseNum,1) / 10;
|
||
% end
|
||
|
||
%载频RF
|
||
RadarPDW(i).RF = (RF_Generate(Radar(i).RF{3},Radar(i).RF{1},RadarPDW(i).PulseNum,Radar(i).RF{2}))';
|
||
%功率Pr
|
||
% 考虑传播路径中的衰减
|
||
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); % 传播距离
|
||
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).PA = sqrt(RadarPDW(i).Pr);
|
||
% 脉宽PW
|
||
RadarPDW(i).PW = Radar(i).PW + Radar(i).PW * randn(RadarPDW(i).PulseNum,1) * 0.01;
|
||
% 标签
|
||
RadarPDW(i).Label = ones(RadarPDW(i).PulseNum,1) * i;
|
||
%波形调制 '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');
|
||
% %% 按照雷达顺序排列起来
|
||
% 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
|
||
|
||
%% 存入文件
|
||
% 指定保存MAT文件的路径和文件名
|
||
filename = 'C:\Users\86182\MATLAB_code\project0113\RadarPDW.mat';
|
||
% 保存变量到MAT文件
|
||
save(filename, 'RadarPDW');
|