基于FEKO的目标高分辨一维距离像仿真与目标尺寸估计
现代雷达能够通过发射步进频信号实现对目标散射点结构的感知与判定,该博客基于FEKO软件仿真,获取目标的回波数据(电场分量),进而生成目标的高分辨一维距离像(High Resolution Range Profile, HRRP),能够较为方便地得到目标各方向尺寸信息。
雷达高分辨一维距离像能反映目标精细的结构特征,能够刻画目标基础特性。因此,目标HRRP对于目标识别具有重要的意义。对于目标特性数据的获取方法通常可以分为实测和仿真两大类。实测主要采取微波暗室测量的方法,仿真方法则相对多样。该篇博客主要利用电磁仿真软件FEKO对目标进行了建模和回波仿真,最后利用逆傅里叶变换(Inverse Fast Fourier Transform, IFFT)的方法得到目标的一维距离像。
当雷达发射大带宽步进频信号时,如果雷达距离分辨单元远小于目标的径向尺寸,目标会连续占据多个距离单元,从而在雷达视线投影上形成目标幅度的图像,称为目标一维距离像。一维距离像成像原理简要概括如下:
设雷达发射信号为步进频信号,对应带宽为B,步进频步长为△f,其中B=N△f。通过混频和中频处理后,得到基带信号,采样后(满足奈奎斯特采样定理),可得到目标的幅频响应为:
其中,Rk为第k个散射中心与目标中心的相对距离;Bk为第k个回波分量的幅度。直接对上述信号进行IFFT,即可得到目标的HRRP。
利用FEKO的仿真流程如下:①构建目标的FEKO模型;②设置雷达步进频参数以及观测角度信息;③仿真获取*.ffe文件数据;④利用MATLAB读取ffe文件中电场分量信息,实现目标HRRP信息获取。下面分别从正前方视角与侧方视角进行飞机目标HRRP的仿真实验与目标尺寸的估计。
情况一:雷达带宽范围:3GHz-3.3GHz,频点数:100。雷达参数图如下:
雷达从正前方对目标进行观测,观测视角φ=0°,θ=90°,参数设置如下:
观测视角为φ=0°,θ=90°时,雷达视线(Line of Sight, LOS)下,目标的尺寸为机头与机尾的距离,FEKO中的实际测量数据为19m。
测量方法:同时按住Ctrl+shift,就可以选择对应的蓝色小点进行测量。
通过仿真,可以得到该组雷达参数下的ffe文件,部分数据如下图:
目标的回波数据以及HRRP图像分别如下:
图中一维距离像进行了50倍过采样IFFT,即实验中对100点的回波数据进行了5000点的IFFT,因此,每个距离单元实际长度为:C/2B/50,因此目标机头与机尾的尺寸估计结果为:L1 = C/2B/50*(3236-1242)=19.94m。,接近真实数值19m。
情况二:雷达从侧方对目标进行观测,观测视角φ=90°,θ=90°,参数设置如下:
观测视角为φ=90°,θ=90°时,雷达LOS下,目标的尺寸为两个机翼之间的距离,FEKO中的实际测量数据为13.6m。
通过仿真,可以得到该组雷达参数下的ffe文件,部分数据如下图:
此时,目标的回波数据以及HRRP图像分别如下:
图中一维距离像进行了50倍过采样IFFT,即实验中对100点的回波数据进行了5000点的IFFT,因此,每个距离单元实际长度为:C/2B/50,因此目标两个机翼之间的尺寸估计结果为:L1 = C/2B/50*(2969-1632)=13.35m,接近真实数值13.6m。
如有代码问题或者FEKO模型问题,请加V(UltraNextYJ)交流。
%% 目的:从 FEKO 输出的.ffe 文件读取目标 RCS、电场数据
%% 数据中方位角的变化对应phi,俯仰角的变化对应theta。
%% 通过步进频的方式,形成目标的一维距离像。
%% by 阿呆汪
clc
clear all
close all
fre_Num=100; %% 频点个数
azi_Num=1; %% 方位角个数,方位角的变化对应phi
ele_Num=1; %% 俯仰角个数,俯仰角的变化对应theta
upsample = 50; %% 上采样倍数
% 查找某个路径下的 TXT 文件
dir_txt = dir('.\以往的数据\F22_HRRP_CSDN_2.ffe');
folder = string({dir_txt.folder}');
file = string({dir_txt.name}');
filepath = strcat(folder, '\', file);
TXT_Num = length(filepath);
%将多个数据分别读取并存储
for TAR_order = 1:TXT_Num
% cd filepath(TAR_order) %%这里也可以用 load 函数
fid1=fopen(filepath(TAR_order),'rt'); %% FEKO7.0 计算的 RCS_FFE 数据
for fre_layer = 1:fre_Num
for phi_layer = 1:azi_Num
for theta_layer=1:ele_Num
frewind(fid1);%%将文件指针移到文件开头,以便重新读取文件数据
……
…… %%省略
end
end
end
fclose(fid1)
end
%% 数据与结果显示
figure('color',[1 1 1])
for k = 1:TXT_Num
for i = 1:azi_Num
for j = ele_Num
hold on
DATA_now = EV_r(j,i,:,k) +EH_r(j,i,:,k) + 1j*EV_i(j,i,:,k) + 1j*EH_i(j,i,:,k);
% 抽取的不同角度下的回波数据
plot(abs(DATA_now(:)),'b--o',LineWidth=1.3);
end
end
end
grid on
title('飞机目标雷达回波数据(phi=0)');
figure('color',[1 1 1])
for k = 1:TXT_Num
for i = 1:azi_Num
for j = ele_Num
hold on
DATA_now = EV_r(j,i,:,k) +EH_r(j,i,:,k) + 1j*EV_i(j,i,:,k) + 1j*EH_i(j,i,:,k);
% 抽取的不同角度下的回波数据
HRRP_now = ifftshift(ifft(DATA_now(:),floor(upsample * fre_Num)));
% 做更多点数的IFFT
plot(abs(HRRP_now),'b',LineWidth=1.3);
end
end
end
grid on
title('飞机目标HRRP(phi=0)');
博客对应文件如下: