matlab中的omega-k算法仿真

omega-k algorithm simulation in matlab

我想根据cumming的书《合成孔径雷达数据的数字处理》模拟omega k算法聚焦合成孔径雷达原始数据。首先,我在 stripmap 模式下模拟点目标原始数据,并执行书中提到的所有操作。但是我的目标没有集中。为了确保我的原始数据是真实的,我用传统的RDA算法聚焦它,我的点目标聚焦在真实的位置,这意味着我的原始数据模拟例程是好的。

这是我的 omega k 算法的 matlab 代码:

%% __________________________________________________________________________
fr          = linspace(-fs/2,fs/2,nfftr);
faz         = linspace(-PRF/2,PRF/2,nffta);
fr_prime    = sqrt((f0+fr).^2-(c*faz'/(2*vp)).^2)-f0;
Rref        = rs(ceil(Ns/2));
theta_ref   = 4*pi*Rref/c*(fr_prime+f0)+pi*fr.^2/kr;
%2D FFT
S_raw       = fftshift(fft2(s_raw,nffta,nfftr));
%RFM
S_BC        = S_raw.*exp(1j*theta_ref);
for idx = 1:Na
    S_int(idx,:) = interp1(fr_prime(idx,:)+f0,S_BC(idx,:),fr+f0,'pchip');
end
S_c = S_int.*exp(-1j*4*pi*fr*Rref/c);
s_c = ifft2(S_c,Na,Nr);
%% __________________________________________________________________________

在此代码中:

三个目标位于射程 [10 , Ns/2 , Ns-10] 和方位 Na/2 处。 这是我的结果:

时域批量压缩后的数据

时域stolt插值后的数据

我检查了几种插值方法,如 sinc interp 、 linear interp 、 pchip 等,但没有一种对我有用。 我感谢所有可以帮助我并告诉我我的错误的人...... 谢谢...

在Omega-k的准确版本中,Cumming没有要求在stolt插值后再次与匹配滤波器相乘。只需使用 2D iFFT 即可完成对焦。