ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MATLAB实现SAR成像全流程:从回波仿真到图像质量评估

MATLAB实现SAR成像全流程:从回波仿真到图像质量评估 简介本资源是一套面向电子信息工程、计算机及数学专业本科生的合成孔径雷达SAR成像原理与MATLAB实现教学实践包聚焦课程设计、期末大作业及毕业设计中的核心算法建模与图像重建任务。压缩包共6个文件4个MATLAB源码文件2份PDF讲义总大小879KB其中m文件涵盖线性调频信号生成、距离压缩、回波仿真与距离徙动校正等关键处理模块PDF讲义系统梳理SAR基础知识与信号建模方法内容紧密衔接、注释详尽、参数高度可调支持MATLAB 2014a至2024b多版本直接运行。已有55人学习下载配套实测案例数据开箱即用无需额外配置或采集显著降低SAR信号处理入门门槛助力读者从理论推导到代码实现再到图像可视化全流程贯通掌握。1. 这个东西到底是个啥用MATLAB从头过一遍SAR成像全流程先说结论这份压缩包里的东西不是给你跑出来一张图就完事的演示Demo而是一套能让你从回波仿真一路走到图像质量评估的完整SAR处理链路。适合三类人刚接触SAR、被各种距离压缩方位压缩距离徙动校正术语劝退的初学者已经能跑通脚本但想搞清楚每个模块为什么这么写的进阶者以及需要用现成代码快速比对算法效果的工程人员。我最早接触SAR是在研究生阶段导师扔给我一堆英文文献和一套稀疏得可怜的代码让我自己复现距离多普勒算法。当时最大的痛苦不是公式看不懂而是不知道每个中间变量到底长什么样、每个处理步骤的物理意义到底是什么。公式我都能推导但一遇到为什么这里要先做距离压缩再做方位压缩为什么距离徙动校正要插值这类工程问题就卡壳。这套代码最大的价值就是把这些卡壳点变成了可视化的中间结果。从功能上说这套程序覆盖了SAR成像的几个核心模块正侧视条带SAR回波仿真设定平台参数、目标位置后生成原始回波数据距离压缩与匹配滤波把回波在距离维上聚焦距离徙动校正RCMC解决距离单元随方位时间走动的问题方位压缩完成方位维聚焦输出图像成像结果可视化与性能评估查看点目标响应、旁瓣、分辨率等指标。这些模块凑在一起恰好就是一套标准的正侧视条带SAR数据处理流程。如果你手头正好在学《合成孔径雷达算法与实现》或类似教材的第二章到第四章这套代码可以作为教材公式的可视化解释器来用。需要提前说明的是这只是原作者在常规教学实践中的一种实现方案未必是工程级最优解但作为入门和原理验证它的结构清晰度比很多工业代码要好得多。2. 为什么首选MATLAB而不是Python或其他工具可能有人会问现在Python这么火遥感处理都用Python了为什么还要用MATLAB做SAR这是个好问题我的看法如下。MATLAB在SAR领域至今仍是主流语言之一原因有三个。第一矩阵运算是SAR所有算法的底座。距离压缩、方位压缩本质上都是二维矩阵的傅里叶变换和复数乘加运算。MATLAB对这类运算的语法几乎和数学公式一一对应fft、ifft、.*操作符直接映射到算法表达式中间不需要像Python那样做大量的numpy维度对齐操作。初学者看着代码就能回想教材公式这本身就是一种学习辅助。第二内置的phased阵列信号处理工具箱和信号处理工具箱提供了大量可直接调用的函数。虽然这套代码核心算法都是自己写的但滤波、窗函数、插值这些基础组件可以放心交给工具箱代码量能压缩不少。第三调试体验对新手极其友好。矩阵的维度、实部虚部、幅度相位可以在工作区直接查看图形化显示中间结果是默认能力。Python里要plt.imshow加plt.colorbar一堆操作MATLAB一条imagesc命令就搞定。当然Python也不是不行。SARSCAPE、PyRAT等开源工具都在Python生态里。但如果你是想理解算法而不是直接调包MATLAB的自建脚本逻辑更接近公式本身。这也是我在教学和辅导中一直推荐MATLAB入门的原因。提示如果你只在Linux服务器上跑没有图形界面MATLAB也可以用-nodisplay模式运行脚本把结果存成.fig或.mat文件再导出不影响算法验证。接下来说说这套代码目录里大概有哪些文件。原作者没有提供详细的目录树但根据MATLAB SAR项目的常见组织方式一般会包含以下几个核心脚本文件常见命名作用SAR_Parameters.m参数设置脚本载频、带宽、脉冲宽度、PRF、平台速度、场景中心距离等EchoGen.m回波生成器计算目标到雷达的斜距历程生成基带回波矩阵RangeCompress.m距离压缩模块包含匹配滤波器设计、加窗、距离FFT处理RCMC.m距离徙动校正模块实现插值或频域校正AzimuthCompress.m方位压缩模块方位匹配滤波与多普勒参数计算Main_SAR_Imaging.m主程序串起整个流程输出最终图像PlotResults.m可视化绘制回波实部、距离压缩结果、最终图像、点目标剖面等如果你下载下来发现文件名不一样不要慌先找主函数入口通常命名里带有main或demo字样。3. 回波仿真这一步决定了后面所有环节的成败先看整个链路最重要的一步原始回波仿真。很多人拿到代码就先跑看到一张图出来觉得挺高兴但根本不知道这张图是怎么生成的。等自己换参数、改场景就蒙了。所以我们先把这一步的原理彻底捋清楚。3.1 回波信号到底长什么样SAR发射的是线性调频信号LFM也叫Chirp信号。它的数学表达式是s_t(t) rect(t/Tp) * exp(j2pi*(fct 0.5Kr*t^2))其中Tp是脉冲宽度fc是载频Kr是调频率。实际数字信号处理中我们通常先解调到基带所以基带发射信号是s_t(t) rect(t/Tp) * exp(jpiKr*t^2)雷达发射这个信号后遇到地面目标反射回来接收到的回波是发射信号的延迟版本同时幅度衰减。设目标到雷达的双程斜距为R(t)则回波基带信号为s_r(t) A * rect((t - 2R(t)/c)/Tp) * exp(jpiKr*(t - 2R(t)/c)^2)这里c是光速A是幅度因子通常简化为1或按雷达方程计算。关键在于目标斜距R(t)是随时间变化的因为平台在运动。这个随时间变化的R(t)就是SAR能实现方位高分辨的物理基础。3.2 代码里如何生成回波我在MATLAB里实现回波生成时核心逻辑大致如下% 参数设置 fc 5.3e9; % 载频 5.3GHz B 30e6; % 带宽 30MHz Tp 2.5e-6; % 脉冲宽度 2.5us Kr B / Tp; % 调频率 PRF 200; % 脉冲重复频率 fs 60e6; % 距离向采样率 c 3e8; % 光速 % 目标位置地距坐标 target_x 0; % 方位向位置 target_y 5000; % 距离向位置斜距约5000m % 平台参数 v 150; % 平台速度 m/s % 合成孔径时间 L_sar 100; % 合成孔径长度 Ta L_sar / v; % 合成孔径时间 % 方位向采样点数 Na round(Ta * PRF); % 距离向采样点数 Nr round(Tp * fs) 100;回波矩阵的每一行对应一个方位向采样点即一个发射脉冲每一列对应一个距离向时间采样点。生成回波时遍历每个方位向采样时刻t_eta计算目标在该时刻的斜距然后生成对应的基带回波并叠加到矩阵中。% 慢时间序列 eta (-Na/2 : Na/2-1) / PRF; % 快时间序列 tau (-Nr/2 : Nr/2-1) / fs; % 回波矩阵初始化 echo zeros(Na, Nr); for i 1:Na R sqrt(target_y^2 (target_x - v * eta(i))^2); % 快时间延迟 tau_delay 2 * R / c; % 生成该方位时刻的基带回波 echo_signal exp(1j * pi * Kr * (tau - tau_delay).^2); % 对脉宽范围外的信号置零 echo_signal(abs(tau - tau_delay) Tp/2) 0; % 叠加幅度简化处理 echo(i, :) echo_signal; end这段代码看起来简单但有几个细节值得注意第一个细节是快时间序列的采样率选择。距离向采样率fs必须大于带宽B奈奎斯特条件实际通常取fs 1.2B ~ 1.5B。如果fs取太小距离向会混叠成像质量明显变差。第二个细节是距离向采样点数的计算。Nr round(Tp * fs) 100多加的100是为了给回波在距离向留出余量因为回波到达时间2R/c随方位变化会超出标称脉宽范围。第三个细节是幅度模型被简化成了纯常数。真实情况下目标回波幅度与距离的四次方成反比、还受天线方向图调制这里忽略是为了聚焦在成像算法本身。如果你要做更逼真的仿真可以在echo_signal上乘一个1/R^2的距离衰减因子或者加一个天线方向图加权。3.3 回波可视化你看到的到底是什么回波矩阵生成后通常用imagesc画出来横轴是快时间采样点纵轴是方位向脉冲序号。配合real()取实部显示可以看到沿方位向的一条亮线对应目标的距离轨迹。这个轨迹长什么样如果你画出来发现目标回波是一条斜线恭喜你这就是距离徙动RCM的直观体现。距离徙动就是指目标回波在距离维上的位置随方位时间变化的现象。正侧视条件下目标最靠近雷达的时刻斜距最小回波在距离维的位置最靠前离开该时刻后斜距增大回波位置后移。整条轨迹近似为一条抛物线远距时更接近二次曲线。这一步看到斜线是很正常的后续的距离徙动校正就是为了把这条斜线扳直让它变成一条直线然后方位压缩才能聚焦。4. 距离压缩把宽度变成尖峰的关键一步4.1 为什么需要匹配滤波回波信号是线性调频信号能量均匀分布在脉宽Tp内时间分辨率只有约Tp对应距离分辨率c*Tp/2这个分辨率太粗了。LFM信号的好处是可以通过匹配滤波把宽脉冲压缩成窄脉冲理论上压缩后脉冲宽度变成1/B对应的距离分辨率就是c/(2B)。拿30MHz带宽举例压缩后距离分辨率约5米。如果不压缩2.5微秒脉宽对应的距离分辨率是375米差距一目了然。4.2 匹配滤波的MATLAB实现距离压缩有两种做法时域卷积和频域匹配滤波。时域卷积计算量大实际中几乎都用频域实现。% 距离向匹配滤波器 % 参考信号发射信号的共轭逆序等价于频域共轭 ref_signal exp(-1j * pi * Kr * tau.^2); ref_fft fft(ref_signal, Nr); % 逐方位向做距离压缩 for i 1:Na echo_fft fft(echo(i, :), Nr); compressed_fft echo_fft .* ref_fft; compressed(i, :) ifft(compressed_fft); end这段代码的物理逻辑是回波与发射信号的匹配滤波等于在频域乘以发射信号频谱的共轭。ref_signal就是发射信号基带的共轭所以频域相乘等效于时域卷积。实际工程中匹配滤波器的参考信号通常不是直接对时间序列取共轭而是直接在频域生成匹配滤波函数。原理上二者等价但频域直生成可以避免FFT点数对齐问题。一个常见的实现是% 频域匹配滤波器距离向 f_tau (-Nr/2 : Nr/2-1) * (fs / Nr); f_tau fftshift(f_tau); matched_filter exp(1j * pi * f_tau.^2 / Kr);然后每一行回波FFT后点乘这个滤波器再IFFT。这种做法更接近教材中的频域匹配滤波也更容易理解。4.3 加窗的必要性匹配滤波输出的脉冲是sinc函数形状第一旁瓣约-13.2dB。这个旁瓣在图像上会形成虚假目标影响弱目标检测。为了抑制旁瓣通常在匹配滤波中引入窗函数常见的是Hamming窗或Kaiser窗。% 在距离匹配滤波器中加Hamming窗 window hamming(Nr).; matched_filter_windowed matched_filter .* window;加了Hamming窗后旁瓣能压到-42dB左右但主瓣会展宽约1.3~1.5倍距离分辨率略微变差。这是旁瓣抑制和分辨率之间的典型权衡。在实际系统设计中到底加不加窗、加什么窗取决于任务需求检测弱目标优先考虑加窗追求分辨率优先考虑不加窗。4.4 距离压缩后的可视化距离压缩后compressed矩阵的行向量在目标所在距离单元会出现一个尖锐的峰值。画imagesc(abs(compressed))时原来那条斜线会变细变亮但仍然是一条斜线——因为距离徙动还没有校正。很多人到这里就以为距离压缩出问题了其实不是这是完全正常的中间状态。5. 距离徙动校正RCMC把斜线扳直的工程细节距离压缩做完后目标能量集中到了距离维的窄脉冲但方位维上能量还是分散的。因为方位向不同时刻目标回波所在的距离单元不同。要对方位向做压缩必须先把不同方位时刻的能量搬到同一个距离单元上这就是距离徙动校正的由来。5.1 距离徙动的解析式正侧视条带SAR中点目标的斜距表达式为R(eta) sqrt(R0^2 (v*eta)^2)其中R0是最近斜距eta是慢时间。将上式做泰勒展开R(eta) ≈ R0 (veta)^2 / (2R0)第二项就是距离徙动量RCM。可以看到它是关于eta的二次函数。在合成孔径边缘eta Ta/2处RCM最大RCM_max v^2 * Ta^2 / (8 * R0) L_sar^2 / (8 * R0)以参数v150m/s、R05000m、L_sar100m为例L_sar^2 / (8*R0) 10000 / 40000 0.25m。这个值不到距离分辨率的十分之一看起来很小。但如果目标是5公里外的合成孔径长度更大或者平台速度更快RCM会显著增大。例如L_sar300m时RCM_max 90000 / 40000 2.25米这时候不校正就会导致方位压缩后目标散焦。5.2 RCMC的实现方式教材里基于距离多普勒算法的RCMC通常在距离多普勒域距离压缩后、方位FFT后完成。因为对方位向做FFT后目标的距离徙动轨迹在方位频域是一条直线校正斜率为(f_eta/f_eta_R)*λ*R0/(2*v^2)。但代码里更简单的一种做法是直接在时域里对距离压缩后的矩阵逐方位行做插值把每个方位时刻的回波搬到它该在的距离单元。MATLAB中可以用interp1完成这个插值% 假设 compressed 是距离压缩后的回波矩阵Na x Nr % 计算每个方位时刻目标的斜距针对单个目标场景 R_eta sqrt(R0^2 (v * eta).^2); % 斜距对应的距离采样位置 range_bins R_eta * fs / c; % 以距离采样点数为单位 rcmc_compressed zeros(size(compressed)); for i 1:Na % 对第i行做插值将能量搬移到固定距离单元 rcmc_compressed(i, :) interp1(tau, compressed(i, :), tau - 2*(R_eta(i)-R0)/c, linear, 0); end这个插值等效于把每个方位时刻的回波在距离向移动2*(R_eta-R0)/c的时间把斜距为R_eta的回波补偿到参考距离R0处。插值方法用线性插值就够了精度要求高可以用sinc插值。5.3 插值精度对成像的影响插值最怕的不是插值误差大而是插值位置偏差系统性积累。如果插值精度不够距离徙动校正不彻底方位压缩后目标会沿方位向扩散表现为图像上目标模糊。典型的症状是点目标在方位向的剖面主瓣变宽、旁瓣不对称。如果你发现最终图像的点目标方位向剖面对称性很好但主瓣偏宽多半是插值导致的轻微散焦。换成sinc插值会有改善% sinc插值示例简化版 function y_out sinc_interp(y_in, x_in, x_out) sinc_m 8; % 插值核长度 y_out zeros(size(x_out)); for k 1:length(x_out) delta x_out(k) - x_in; % 截断sinc插值 idx find(abs(x_in - x_out(k)) sinc_m); if isempty(idx) y_out(k) 0; else y_out(k) sum(y_in(idx) .* sinc(x_in(idx) - x_out(k))); end end end注意MATLAB自带的sinc函数定义为sinc(x) sin(pi*x)/(pi*x)没有归一化时间轴用的时候要小心坐标单位换算。提示RCMC做完后用imagesc(abs(rcmc_compressed))画图你应该看到目标回波轨迹从斜线变成了直线。这是判断RCMC是否做对的直接方法。6. 方位压缩最后一脚油门出图6.1 方位向为什么能做高分辨方位向的高分辨率来自合成孔径的概念。平台运动过程中目标被不同方位角度观测等效于形成一个大的合成孔径天线。方位向匹配滤波就是对这个合成孔径内的回波做相干积累实现方位向聚焦。类比地说距离向压缩是用匹配滤波把LFM信号压成尖峰方位向压缩也是匹配滤波只不过参考函数是方位向的多普勒调频信号方位向LFM。这就有个直觉SAR成像本质上就是二维匹配滤波距离向一次方位向一次。6.2 方位压缩实现方位向匹配滤波的原理与距离向相同只是作用维度和参考函数不同。在多普勒域方位频域做匹配滤波是标准做法% 方位向参考函数时域 f_eta_ref exp(-1j * pi * f_eta_R * eta.^2); % 其中 f_eta_R 2*v^2 / (lambda * R0)多普勒调频率 % 对方位维做FFT rcmc_fft fftshift(fft(rcmc_compressed, Na, 1), 1); % 频域匹配滤波 f_eta fftshift((-Na/2 : Na/2-1) / Na * PRF); matched_filter_az exp(1j * pi * f_eta.^2 / f_eta_R); azimuth_fft rcmc_fft .* matched_filter_az; % IFFT回时域 azimuth_compressed ifft(ifftshift(azimuth_fft, 1), [], 1);这里的关键参数是方位向多普勒调频率f_eta_R 2*v^2/(lambda*R0)。这个公式是正侧视SAR的理想值。实际工程中需要从回波数据中估计如用对比度最优化的自聚焦方法因为平台速度、波束指向都可能偏离标称值。6.3 方位向分辨率验证理想情况下正侧视SAR的方位向分辨率约为天线真实孔径长度D的一半ρ_a D/2。但这里的合成孔径长度L_sar和天线孔径不是一回事需要区分。如果你在代码中设置的L_sar是人为指定的合成孔径长度那么方位分辨率由多普勒带宽决定ρ_a v / B_doppler其中B_doppler是多普勒带宽近似为B_doppler ≈ 2*v*θ_bw / λθ_bw是波束宽度。而θ_bw ≈ λ / D_aD_a是天线的方位向孔径。代入后得到ρ_a v * λ / (2*v*λ/D_a) D_a / 2回到了教科书结论。所以代码里的方位分辨率最终由天线尺寸决定不取决于合成孔径长度。怎么验证代码成像结果是否达到理论分辨率对最终图像中点目标所在的行方位向剖面取幅度值找到主瓣的-3dB宽度乘以方位向采样间隔就是实际方位向分辨率。对比理论值如果差异在10%以内说明成像链路是完整且正确的。7. 从点目标到多目标场景动手改一遍才算真会只跑通一个点目标你只是看了一部演示片。真正理解SAR的必经之路是改成多目标场景然后再尝试加噪声、加干扰、改平台参数。7.1 多目标回波生成多目标场景的回波生成思路很简单每个目标单独生成回波然后叠加。注意点在于每个目标的斜距历程不同对应的时延和幅度不同。% 定义多个目标方位位置距离向位置幅度 targets [ 0, 5000, 1; 50, 5050, 0.8; -30, 4980, 0.6; 100, 5100, 0.5; ]; echo zeros(Na, Nr); for t 1:size(targets, 1) tx targets(t, 1); ty targets(t, 2); amp targets(t, 3); for i 1:Na R sqrt(ty^2 (tx - v * eta(i))^2); tau_delay 2 * R / c; echo_signal amp * exp(1j * pi * Kr * (tau - tau_delay).^2); echo_signal(abs(tau - tau_delay) Tp/2) 0; echo(i, :) echo(i, :) echo_signal; end end多目标场景下回波的距离徙动轨迹会变成多条斜线距离压缩后也能看到多个尖峰。这能直观验证后续的RCMC和方位压缩是否对所有目标都有效。7.2 多目标图像观察要点成像后应该看到多个点目标在图像上形成各自的亮斑。检查几个指标各目标亮度应与设定的幅度成比例目标位置应正确映射到图像坐标距离向和方位向的旁瓣应该正常没有明显散焦。如果某个目标的位置偏了多半是参数设置中target_x与图像方位坐标的映射关系没对齐。常见的坐标系约定是图像坐标的方位向中心表示eta0的位置也就是目标最近斜距时刻的位置。7.3 加噪声后的SAR图像长什么样在回波矩阵上加入高斯白噪声可以直接检验成像系统的鲁棒性SNR_dB 10; noise_power mean(echo(:).^2) / (10^(SNR_dB/10)); noise sqrt(noise_power/2) * (randn(size(echo)) 1j*randn(size(echo))); echo_noisy echo noise;加了噪声后成像图像会出现背景颗粒感。点目标仍然能看清但旁瓣可能会被噪声淹没。这时可以观察不同SNR下点目标峰值是否还能突出背景。这个实验能帮助你理解SAR系统为什么要做多视处理或相干积累来提升信噪比。7.4 系统参数对成像的影响我自己做练习的时候最常改的参数是这几个参数改小的影响改大的影响带宽B距离分辨率变差回波调频率变小距离分辨率变好采样率需求升高平台速度v方位多普勒调频率变小RCM变小RCM增大方位聚焦难度增大最近斜距R0RCM变小RCM变大距离徙动更明显PRF方位采样不足可能混叠数据量增大计算变慢这些参数的影响不是独立的。比如你增大平台速度同时保持PRF不变方位向可能欠采样。可以事先算一下方位向多普勒带宽B_doppler然后确保PRF B_doppler否则图像方位向会混叠。8. 常见问题排查我自己踩过的坑这部分记一下我在跑SAR代码时实际遇到过的坑以及对应的排查思路。8.1 图像全黑或全白最常见原因是动态范围问题。SAR回波的幅度范围可能跨越几十dB直接用imagesc(abs(img))显示时极少数强目标点掩盖了大部分弱信号。解决方法是取对数幅度显示imagesc(20*log10(abs(img) / max(abs(img(:))) eps));eps防止对0取对数。8.2 目标散焦成十字形如果成像后目标呈现十字形亮线距离向和方位向都有扩展通常说明两个维度都有散焦。优先检查距离向脉压窗函数是否加对位置方位向参考函数的多普勒调频率是否准确距离徙动校正是否做完整。十字形的另一半原因可能是参数中fc、Kr、fs之间一致性有问题比如Kr B/Tp但实际回波用的调频率不一致。8.3 目标位置偏移如果目标成像后位置和预期坐标不一致先检查坐标基线的定义。SAR处理里方位向时间的零点通常定义在场景中心时刻距离向的零点通常定义在参考斜距处。不同代码的坐标约定不同需要看主程序里eta和tau的生成方式。8.4 运行速度慢处理大场景时逐行FFT循环会非常慢。MATLAB可以用向量化改写% 逐行距离压缩的慢速写法 for i 1:Na compressed(i, :) ifft(fft(echo(i, :)) .* ref_fft); end % 向量化写法 compressed ifft(fft(echo, [], 2) .* ref_fft, [], 2);这样一改速度能提升一个数量级。同理方位压缩也可以按列向量化。8.5 距离向分辨率达不到理论值距离分辨率达不到c/(2B)通常是采样率不够高或窗函数引入的主瓣展宽。如果代码里加了Hamming窗分辨率期望值应该是1.3 * c/(2B)左右。如果你用理论值c/(2B)去对比加窗后的结果肯定对不上这不算错误。正确做法是先确认窗函数类型再计算对应的理论分辨率。9. 如何进一步榨干这套代码的价值跑通只是第一步。我的建议是拿到这套代码后做三件进阶的事。9.1 替换成像算法当前代码大概率是基于距离多普勒算法的。你可以试着用chirp scaling算法CSA重写处理流程对比两种算法在相同参数下的成像质量和计算效率。CSA不依赖插值避免了RCMC插值的精度损失在较大场景下优势明显。9.2 加入运动误差模型真实SAR平台不可能完全匀速直线运动。你可以给平台速度加一个正弦扰动或给位置加一个随机误差观察成像质量下降情况再尝试用自聚焦算法相位梯度自聚焦PGA恢复图像质量。这样就从会用工具进阶到了理解系统误差链。9.3 换数据验证如果手头有真实的SAR回波数据集去网上找开源的星载或机载SAR原始数据把这套代码的处理流程迁移过去。迁移过程中你会遇到参数格式、数据头解析、辐射定标等一系列问题这些才是工程实战中真正有价值的部分。我自己当年从点目标仿真过渡到真实数据处理大概花了三周。前两周都在折腾数据格式和参数提取真正跑通处理流程只用了两天。但正是这个折腾过程让我对SAR数据结构的理解产生了质变。9.4 学会写你自己版本的README好的代码不能只跑通还要能复用。建议把每次实验的参数配置、成像结果、遇到的问题记在一个README.md里。这不是给别人看的是给三个月后的自己看的。我见过太多人跑通后一个月再打开代码完全不记得参数怎么设的。记录本身就是一种工程能力。最后分享一个实操中发现的效率习惯把参数设置集中在一个独立脚本里用结构体统一管理。比如% 创建参数结构体 sar_params.fc 5.3e9; sar_params.B 30e6; sar_params.Tp 2.5e-6; sar_params.PRF 200; sar_params.fs 60e6; sar_params.v 150; sar_params.R0 5000; sar_params.L_sar 100;这样主程序里就用sar_params.xxx引用参数后续如果要批量跑不同参数组只需要循环修改结构体字段就行比维护一堆散落的全局变量省心太多。这也是我在处理SAR数据集时最推荐的代码组织方式。本文还有配套的精品资源点击获取
返回列表