%% 防空地面雷达搜索跟踪模型
%% 运行环境初始化
close all; % 关闭所有现有图形窗口
clear;
clc;
%% 全局参数设置
Sig_Time = 300; % 仿真总步数
STEP = 0.1; % 时间步长(s)
Sig_Num = floor(Sig_Time/STEP) + 1; % 总采样点数
Time = (0:STEP:Sig_Time)'; % 时间数组
Max_R=20000; % 定义雷达PPI显示的最远距离 (注意: 这只是PPI显示范围)
Ls = 1;
%% 地面雷达参数(通过子程序获取)
try
Radar = getRadarParameters(); % 调用修改后的参数输入函数
catch ME
errordlg(['雷达参数获取失败: ' ME.message], '初始化错误');
return;
end
Radar_Pos = [0, Radar.hr, 0]; % 雷达位置[x,y,z] (Y是高度)
%% 目标参数
[Target, State_T, Guide_T] = createTargetParameters(Sig_Num, STEP);
% State_T 包含 [x, y, z, vx, vy, vz, Theta_T, Psi_T]
%% 动态计算雷达-目标距离 (可选,这里主要用于理解)
Radar_Dist = zeros(Sig_Num, 1); % 三维距离
Radar_Dist_xz = zeros(Sig_Num, 1); % xz平面距离
for k = 1:Sig_Num
target_pos = State_T(k,1:3);
Radar_Dist(k) = norm(target_pos - Radar_Pos);
Radar_Dist_xz(k) = norm([State_T(k,1), State_T(k,3)]); % XZ平面距离(雷达在原点xz平面)
end
%% 环境参数
Ts = 290; % 等效温度 [K]
sigma_h = 0.1; % 地面粗糙度 (m)
%% 计算最大探测距离(简化版)
R_max_bt = calculateMaxDetectionRange(Target.RCS, Radar); % 确保这个函数存在或替换为实际计算
fprintf('理论最大探测距离: %.2f km\n', R_max_bt/1000);
fprintf('PPI显示最大距离: %.2f km\n', Max_R/1000);
%% 干扰选择 (这部分代码未提供,假设存在)
% jamming_type = menu('选择干扰类型','远距离干扰','自卫干扰', '无干扰','混合干扰');
% [SOJ, SSJ] = jamming_parameters_with_position(jamming_type); % 确保这个函数存在
% =========================================================================
%% 新增:绘制三维运动轨迹图
% =========================================================================
figure('Name', '3D Trajectory Visualization', 'Position', [950, 100, 800, 800]); % 创建新窗口
plot3(State_T(:,1), State_T(:,3), State_T(:,2), 'b-', 'LineWidth', 1.5); % 绘制目标轨迹 (X, Z, Y -> X地距, Z地距, Y高度)
hold on;
plot3(Radar_Pos(1), Radar_Pos(3), Radar_Pos(2), 'rs', 'MarkerSize', 10, 'MarkerFaceColor', 'r'); % 绘制雷达位置 (红方块)
plot3(State_T(1,1), State_T(1,3), State_T(1,2), 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'g'); % 标记目标起点 (绿圈)
plot3(State_T(end,1), State_T(end,3), State_T(end,2), 'mx', 'MarkerSize', 8, 'Li
最新发布