条带式SAR回波处理仿真(全注释)

处理后的SAR成像结果

clear all;  % 清除工作区中的所有变量,为程序运行做准备
close all;
clc

dr = .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  % 添加网格线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值