Files
shuibing811 ae52c38492 ---
2025-01-25 17:14:00 +08:00

199 lines
7.9 KiB
Matlab
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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');