基于MATLAB实现的坐标系转换
在双基地星载雷达仿真中,坐标系转换是实现目标定位与跟踪的核心环节。基于MATLAB实现完整的坐标系转换流程,涵盖地心惯性坐标系(ECI)→地心地固坐标系(ECEF)→当地导航坐标系(NED)→雷达坐标系的转换,并提供完整代码实现。
一、坐标系定义与转换关系
1. 坐标系定义
- ECI坐标系:原点在地心,坐标轴与惯性空间固定(J2000坐标系)。
- ECEF坐标系:原点在地心,坐标轴与地球固连(旋转坐标系)。
- NED坐标系:原点在雷达位置,X轴指向北,Y轴指向东,Z轴垂直向下。
- 雷达坐标系:原点在天线相位中心,极坐标系(距离、方位角、俯仰角)。
2. 转换流程
ECI → ECEF(地球自转修正) → NED(导航坐标系) → 雷达坐标系(极坐标)
二、MATLAB实现代码
1. ECI转ECEF(考虑地球自转)
function [r_ecef, v_ecef] = eci2ecef(r_eci, t)
% 输入:r_eci - ECI坐标 (m), t - 时间 (UTC秒)
% 输出:r_ecef - ECEF坐标 (m), v_ecef - ECEF速度 (m/s)
% 地球自转角速度 (rad/s)
omega_ie = 7.2921150e-5;
% 计算ECEF坐标
R = rotation_matrix(t); % 地球自转矩阵
r_ecef = R * r_eci;
% 计算ECEF速度(假设目标静止)
v_ecef = -omega_ie * cross(r_ecef, [0;0;1]);
end
function R = rotation_matrix(t)
% 计算从J2000到当前时刻的旋转矩阵
theta = omega_ie * t;
R = [cos(theta) sin(theta) 0;
-sin(theta) cos(theta) 0;
0 0 1];
end
2. ECEF转NED(需已知雷达位置)
function [r_ned] = ecef2ned(r_ecef, lat0, lon0, h0)
% 输入:r_ecef - ECEF坐标 (m), lat0/lon0/h0 - 雷达位置经纬高 (rad, m)
% 输出:r_ned - NED坐标 (m)
% 地球椭球参数 (WGS84)
a = 6378137; % 长半轴
e2 = 6.69437999e-3; % 第一偏心率平方
% 计算当地坐标系旋转矩阵
[sin_lat, cos_lat] = deal(sin(lat0), cos(lat0));
[sin_lon, cos_lon] = deal(sin(lon0), cos(lon0));
R1 = [1, 0, 0;
0, cos_lat, -sin_lat;
0, sin_lat, cos_lat]; % 经度旋转
R2 = [cos_lon, sin_lon, 0;
-sin_lon, cos_lon, 0;
0, 0, 1]; % 纬度旋转
Rn = R1 * R2; % 先纬度后经度的旋转矩阵
% 计算NED坐标
r_ecef_local = r_ecef - [0;0;R0+h0]; % 减去地球半径(R0=6378137)
r_ned = Rn' * r_ecef_local;
end
function R0 = get_earth_radius(lat)
% 计算地球曲率半径
a = 6378137; e2 = 6.69437999e-3;
N = a / sqrt(1 - e2*sin(lat)^2);
R0 = N * cos(lat);
end
3. NED转雷达坐标系(极坐标)
function [r, az, el] = ned2radar(r_ned, radar_alt)
% 输入:r_ned - NED坐标 (m), radar_alt - 雷达高度 (m)
% 输出:r - 距离 (m), az - 方位角 (rad), el - 俯仰角 (rad)
% 计算距离
r = sqrt(r_ned(1)^2 + r_ned(2)^2 + (r_ned(3)+radar_alt)^2);
% 计算方位角(从北向顺时针)
az = atan2(r_ned(2), r_ned(1));
% 计算俯仰角(向上为正)
el = atan2(-(r_ned(3)+radar_alt), sqrt(r_ned(1)^2 + r_ned(2)^2));
end
三、完整仿真示例
1. 参数设置
% 雷达位置(北京)
lat0 = deg2rad(39.9042); % 纬度
lon0 = deg2rad(116.4074); % 经度
h0 = 100; % 高度 (m)
% 目标ECI坐标(假设静止)
t = 0; % 时间 (UTC秒)
r_eci = [7e6; 0; 0]; % 位于X轴正方向7000km处
% 转换流程
[r_ecef, v_ecef] = eci2ecef(r_eci, t);
[r_ned] = ecef2ned(r_ecef, lat0, lon0, h0);
[r, az, el] = ned2radar(r_ned, h0);
2. 结果验证
disp(['距离: ', num2str(r/1e3), ' km']);
disp(['方位角: ', num2str(rad2deg(az)), ' 度']);
disp(['俯仰角: ', num2str(rad2deg(el)), ' 度']);
四、关键优化与验证
1. 地球曲率修正
- 在
ecef2ned函数中,使用get_earth_radius计算曲率半径,避免平面近似误差。
2. 速度场建模
- 若目标运动,需在
eci2ecef中叠加目标速度引起的多普勒频移。
3. 可视化验证
% 3D轨迹绘制
figure;
plot3(r_eci(1), r_eci(2), r_eci(3), 'ro', 'MarkerSize', 10);
hold on;
plot3(r_ned(1), r_ned(2), r_ned(3), 'bx', 'MarkerSize', 10);
xlabel('X (m)'); ylabel('Y (m)'); zlabel('Z (m)');
legend('ECI坐标', 'NED坐标');
grid on;
参考代码 双基地星载雷达仿真,完成坐标系之间的转换 www.youwenfan.com/contentcnm/82216.html
五、扩展应用
- 双基地干涉测量:结合两站NED坐标差,计算目标高度。
- 杂波抑制:通过坐标转换对齐多通道数据,实现STAP处理。
- 抗欺骗干扰:在坐标域设计滤波器抑制虚假目标。

浙公网安备 33010602011771号