处理后的SAR成像结果
clear all; % 清除工作区中的所有变量,为程序运行做准备
close all;
clcdr = .50; % 定义距离分辨率,单位为米
da = .10; % 定义方位分辨率,单位为米% dr = 6*2.54/100; % 另一种计算距离分辨率的方式(注释掉,未使用)
% da = 6*2.54/100; % 另一种计算方位分辨率的方式(注释掉,未使用)
xn = [10000 10015 9985]; % 定义散射点在 x 轴上的位置坐标
yn = [0 -20 20]; % 定义散射点在 y 轴上的位置坐标
Num_Scatter = 3; % 定义散射点的数量
Rnom = 10000; % 定义雷达到目标场景的名义距离
% 雷达参数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%f_0 = 35.0e9; % 定义 HRR 波形的最低频率
df = 3.0e6; % 定义 HRR 波形的频率步长,单位为 Hz
c = 3e8; % 定义光速,单位为 m/s
Kr = 1.33; % 定义斜距变化率与方位向波长的比值Num_Pulse = 2^(round(log2(Kr*c/(2*dr*df)))); % 计算所需脉冲数量,确保其为 2 的幂次
Lambda = c/(f_0 + Num_Pulse*df/2); % 计算雷达信号的波长%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 综合孔径参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
du = 0.2; % 定义合成孔径采样间隔
L = round(Kr*Lambda*Rnom/(2*da)); % 计算合成孔径长度
U = -(L/2):du:(L/2); % 定义合成孔径采样点的位置坐标
Num_du = length(U); % 计算合成孔径采样点的数量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 散射点回波响应%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Num_U = round(L/du); % 将合成孔径长度四舍五入为整数
I_Temp = 0; % 初始化 I 分量临时变量
Q_Temp = 0; % 初始化 Q 分量临时变量
for I = 1:Num_U % 遍历合成孔径采样点
for J = 1:Num_Pulse % 遍历每个脉冲
for K = 1:Num_Scatter % 遍历每个散射点
Yr = yn(K) - ((I-1)*du - (L/2)); % 计算散射点在当前采样点的相对 y 坐标
Rt = sqrt(xn(K)^2 + Yr^2); % 计算雷达到散射点的斜距
F_ci = f_0 + (J-1)*df; % 计算当前脉冲的中心频率
PHI = -4*pi*Rt*F_ci/c; % 计算散射点的相位信息
I_Temp = cos(PHI) + I_Temp; % 累加 I 分量
Q_Temp = sin(PHI) + Q_Temp; % 累加 Q 分量
end;
IQ_Raw(J,I) = I_Temp + i*Q_Temp; % 存储当前脉冲和采样点的复数回波数据
I_Temp = 0.0; % 重置 I 分量临时变量
Q_Temp = 0.0; % 重置 Q 分量临时变量
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 距离维聚焦 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Num_RB = 2*Num_Pulse; % 定义用于FFT的点数,为脉冲数量的两倍
WR = hamming(Num_Pulse); % 生成汉明窗,用于减少频谱泄漏
for I = 1:Num_U % 遍历合成孔径采样点
Range_Compressed(:,I) = fftshift(ifft(IQ_Raw(:,I).*WR, Num_RB)); % 对每个采样点的回波数据进行距离压缩(FFT)
end;
dn = (1:Num_U)*du - L/2; % 计算合成孔径采样点的相对位置坐标
PHI_Focus = -2*pi*(dn.^2)./(Lambda*xn(1)); % 计算聚焦所需的相位补偿
for I = 1:Num_RB % 遍历每个距离单元
Temp = angle(Range_Compressed(I,:)) - PHI_Focus; % 计算相位差
Focused(I,:) = abs(Range_Compressed(I,:)).*exp(i*Temp); % 对每个距离单元进行聚焦处理
end;
% Focused = Range_Compressed; % (注释掉,未使用)直接赋值未聚焦的数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 方位维聚焦 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
WA = hamming(Num_U); % 生成汉明窗,用于方位压缩for I = 1:Num_RB % 遍历每个距离单元
AZ_Compressed(I,:) = fftshift(ifft(Focused(I,:).*WA')); % 对每个距离单元的聚焦数据进行方位压缩(FFT)
end;SAR_Map = 10*log10(abs(AZ_Compressed)); % 将幅值转换为对数刻度,生成SAR图像数据
Y_Temp = (1:Num_RB)*(c/(2*Num_RB*df)); % 计算距离向坐标轴的刻度值
Y = Y_Temp - max(Y_Temp)/2; % 将距离向坐标轴的刻度值平移,使零点居中
X_Temp = (1:length(IQ_Raw))*(Lambda*xn(1)/(2*L)); % 计算方位向坐标轴的刻度值
X = X_Temp - max(X_Temp)/2; % 将方位向坐标轴的刻度值平移,使零点居中image(X,Y,20-SAR_Map); % 显示SAR图像,调整对比度
% image(X,Y,5-SAR_Map); % (注释掉,未使用)另一种对比度调整方式
axis([-25 25 -25 25]); % 设置坐标轴的显示范围
axis equal; % 设置坐标轴的比例相等
colormap(gray(64)); % 设置图像的颜色映射为灰度
xlabel('方位 (m)'); % 设置x轴标签
ylabel('距离 (m)'); % 设置y轴标签
grid % 添加网格线