多普勒效应仿真与MATLAB实现:连续波测速、FFT测频与相参积累全解析
简介面向西电通信工程学院“信号与系统”课程学生这份大作业资料围绕多普勒效应展开将理论分析与MATLAB仿真相结合可帮助完成课程设计并深化对频域分析、系统响应等核心知识点的理解。压缩包共六个文件包含四个按问题拆分的MATLAB脚本分别对应不同小题的建模与仿真实现另有实践大作业的PDF说明和Word文档前者给出题目要求与评分标准后者适合作为报告撰写参考。资源容量控制得当仅1.03MB轻量易得目前已有1003人学习使用适合考前突击或课程设计参考。通过运行脚本、对照PDF和文档读者可以快速复现多普勒效应的仿真过程理清从原理推导到代码实现的思路同时学习MATLAB在信号处理中的典型用法掌握频谱绘制、参数扫描等实操技能为后续通信类课程的项目实践打下基础。1. 多普勒效应大作业从物理直觉到仿真输出的完整闭环很多人觉得“多普勒效应”大作业就是改一行载频但做过的人都知道真正的坑在参数和检测上采样率设错、FFT分辨率不够、门限选不好都会让你在收尾时怀疑人生。通院指南针这份信号与系统多普勒效应大作业资源把整个闭环——多普勒频移建模、连续波混频低通、FFT测频、脉冲相参积累、门限检测和报告用误差表——都串好了。我拆包时先跑通代码再回头补理论后半程基本是改参数就能出结果。适合正在写这道大作业、需要可复现仿真代码和答辩数据的同学。2. 连续波测速与频移建模先立公式再写第一版MATLAB代码2.1 多普勒频移公式与相位历史这两行是后面所有代码的源头这道大作业的物理核心其实很短径向速度为 v 的目标回波相位写成 φ(t)2πfc(t-2R(t)/c)展开之后瞬时频偏就是 fd 2vfc/c。注意这里已经有系数 2因为电磁波从发射到接收走了双程路程。公式没问题的前提下仿真才谈得上“测速准确”。实际写仿真时不建议真的去构造一个 10GHz 的高频载波再采样那会让采样率直接崩掉。常见做法是分成两层先用真实载频计算 fd再用一个较低的中频 fi 作为仿真载波把 fd 叠加到 fi 上。这样既保留了“多普勒频移是频率偏移”的物理含义又让采样的点数、滤波器的阶数都在普通个人电脑能跑的范围内。还有一个容易被忽略的细节是相位连续性。回波信号要写成 cos(2π(fifd)tφ0)让相位随时间一直累积如果每来一个采样点就重新生成一个随机初相频谱会变成一片噪声测出来的峰值毫无意义。这也是后面避坑章里会反复出现的“相参性”问题。2.2 连续波测速骨架代码与三处参数陷阱下面这段代码是我从资源里抽出并验证过的连续波骨架核心是混频、低通、加窗 FFT、峰值提取四步。参数上我用 10GHz 算 fd用 1kHz 做仿真中频采样率 8kHz观察时长 0.2s。% continuous_wave_doppler.m 连续波多普勒测速仿真 clear; close all; clc; %% 基本参数 fc_radio 10e9; % 真实载频 10 GHz只用于计算fd v 3.75; % 径向速度 3.75 m/s c 3e8; fd 2 * v * fc_radio / c; % 理论多普勒频移约 250 Hz fprintf(理论多普勒频移 %.3f Hz\n, fd); fi 1e3; % 仿真中频 1 kHz fs 8e3; % 采样率 8 kHz T 0.2; % 观察时长 0.2 s分辨率 5 Hz fcut 500; % 低通截止频率 500 Hz %% 发射与回波相位历史必须连续 t (0 : round(fs * T) - 1) / fs; tx cos(2 * pi * fi * t); rx cos(2 * pi * (fi fd) * t 0.5); %% 混频输出包含和频 fifd 与差频 fd 两个分量 if_freq tx .* rx; %% 低通提取差频分量 [b, a] butter(5, fcut / (fs / 2), low); baseband filtfilt(b, a, if_freq); %% 加窗FFT后取频谱峰值 N length(baseband); win hann(N); S fft(baseband .* win, N); f_axis (0 : N - 1) / N * fs; [~, idx] max(abs(S(1 : N / 2))); fd_est f_axis(idx); v_est fd_est * c / (2 * fc_radio); fprintf(估计多普勒频移 %.3f Hz, 估计速度 %.2f m/s\n, fd_est, v_est);逻辑说明乘法器输出会有 cos[2π(2fifd)t] 和 cos(2π·fd·t) 两个频率分量前者在 2kHz 附近后者就是我们想测的 250Hz。低通滤掉高频分量后只剩差频信号再用 FFT 观察峰值位置即可反推速度。用 filtfilt 做零相位滤波可以避免普通 IIR 滤波器把峰值位置拉偏如果换成 filter相位畸变可能让测出的 fd 偏出半个谱线间隔。参数说明要留意三处这三处也是我最早自己翻车的地方。第一fd 的公式里已经有 2后面反推速度时不要再多乘一次 2。第二fcut 取 500Hz必须大于目标可能的最大 fd。第三采样率 fs 不能只看 fd 小就取得很低采样率还要容纳混频后的和频分量如果 fs4kHz和频 2kHzfd 已经顶到奈奎斯特边界低通很难做干净。2.3 低通滤波器截止频率怎么选才不把频移滤掉连续波混频以后的频谱里差频是 fd和频是 2fifd。理论上只要 fcut 大于 fd_max 又小于 2fifd 就可以但实际滤波器的过渡带不是直角IIR 滤波器阶数越高过渡带越窄带来的相位失真也越大。我一般按这个习惯定参数先算目标最大速度对应的 fd_max然后取 fcut 在 (1.5~3)·fd_max 之间同时保证 fcut 小于混频后的最低高频分量的一半留出足够过渡带。比如 fd_max500Hz 时fcut1kHz 左右比较稳。滤波完之后用 fvtool(b,a) 看一眼幅频响应确认 fd 所在位置的衰减不超过 0.1dB。如果发现主峰幅度比理论低了一截大概率不是信号问题而是截止频率压得太靠近 fd多普勒频移被滤波器吃掉了。3. 脉冲多普勒与相参积累把FFT测频精度提上去的计算过程3.1 相参积累为什么能把信噪比抬上去连续波测速的短板是只用一个长时间窗做 FFT遇到噪声大、回波弱的场景单条谱线经常淹没在噪底里。大作业里加分的进阶做法是脉冲多普勒发射一串脉冲对每个脉冲做距离向处理再对同一距离单元跨脉冲做 FFT把多个脉冲的能量“攒”到同一个谱峰上。相参积累的增益来源是相位一致性。假设 M 个脉冲的初相固定每个脉冲信号幅度都是 A慢时间 FFT 之后信号幅值变成 M·A噪声是随机相位叠加功率只涨 M 倍于是信噪比提高 M 倍折算成 dB 就是 10·log10(M)。M64 时约 18dB这个提升对检测弱目标非常可观。这能解释一个常见误区单纯增加 FFT 点数做零填充并不能提高真实分辨率也不能让信噪比变好。决定多普勒分辨率的是相参积累总时长而不是零填充后的谱线数量。积累时间 T_c M/PRF对应的频率分辨率 Δf 1/T_c。要看懂这个关系后面调参数才不会白费力气。3.2 慢时间相参积累的代码骨架下面的代码演示 M 个脉冲的慢时间相参积累。这里没有做距离维匹配滤波直接把一个点目标的跨脉冲相位序列拿来做 FFT方便你单独理解“相参”这件事。% coherent_integration_demo.m 慢时间相参积累 clear; close all; clc; M 64; % 相参积累脉冲数 prf 1000; % 脉冲重复频率 1000 Hz fd 250; % 多普勒频移 250 Hz n (0 : M - 1).; % 慢时间脉冲序号 phase 2 * pi * fd * n / prf; % 跨脉冲相位积累 s exp(1j * phase); % 慢时间复信号 win hann(M); S fftshift(fft(s .* win, M)); % 积累后做多普勒FFT fd_axis (-M/2 : M/2 - 1) * prf / M; [~, idx] max(abs(S)); fd_est abs(fd_axis(idx)); fprintf(理论fd %.2f Hz, 积累后估计fd %.2f Hz\n, fd, fd_est);逻辑说明每个脉冲的起始相位都包含 2πfd·n/PRF对这段慢时间序列做 FFT等于把跨脉冲相位变化换算成频率。hann 窗在这里抑制频谱泄漏代价是主瓣稍微变宽峰值位置不受影响。fd_axis 用 PRF/M 做谱线间隔这是由积累时长 64/10000.064s 决定的。参数说明M 越大积累增益越高但代价是雷达数据率变低最大不模糊多普勒频率也随之变小。fd 如果超过 PRF/2多普勒频谱会出现模糊这也是后面避坑章要专门讲的问题。3.3 二维距离-多普勒矩阵把快时间与慢时间合在一起真正能写入报告的是二维矩阵处理即距离-多普勒图。回波数据排成 N×M 矩阵行是快时间采样对应距离列是慢时间脉冲对应多普勒。先在快时间维做 FFT 把时延换算成距离再在慢时间维做 FFT 把相位变化换算成多普勒频率。% RD_matrix_sketch.m 距离-多普勒二维处理示意 % raw_data 为 N快时间 × M慢时间 的复数回波矩阵此处仅演示处理流程 N 128; % 快时间采样点数 M 64; % 慢时间脉冲数 raw_data randn(N, M) 1j * randn(N, M); % 占位数据用时替换为目标回波 win_r hann(N, periodic); win_d hann(M, periodic); % 先距离维加窗并FFT再慢时间维加窗并FFT RD fftshift(fft(raw_data .* win_r, N, 1), 1); RD fftshift(fft(RD .* win_d., M, 2), 2); % 坐标轴距离维按采样率/带宽映射多普勒维按prf/M映射 fd_axis (-M/2 : M/2 - 1) * prf / M;逻辑说明快时间维 FFT 的物理含义是脉冲内部的频率分析时延不同对应谱相位旋转因此峰值位置能换算成距离慢时间维 FFT 则是跨脉冲的相参积累峰值位置对应 fd。两步都加窗可以分别压低距离维和多普勒维的旁瓣。这里的 prf 需要你在仿真中预先定义我通常放在文件开头与 M、N 一起集中管理。参数说明距离分辨率由发射信号带宽决定不是由 N 直接决定多普勒分辨率由 M/PRF 决定。很多大作业报告把“二维矩阵图画出来了”当成完成但老师追问“分辨率是多少”时答不上来所以写报告时要把这两个公式单独列出来。4. 多普勒效应大作业避坑五个实测翻车记录与排查方法4.1 频谱主峰翻到负频率估计值忽正忽负现象每次运行 FFT 提取的峰值一会儿在 250Hz一会儿在 -250Hz速度时正时负。原因对实信号直接做 FFT负频率会出现镜像峰。如果噪声对称分布正负两个峰幅度接近峰值搜索就可能跳变。此外混频后的差频信号本身不带方向信息cos(2πfd·t) 和 cos(-2πfd·t) 在频谱上无法区分。解决先确认信号模型里用的是复信号还是实信号。用实信号时峰值搜索只查 0 到 fs/2 的区间用复信号时正负频率才能区分运动方向。资源里的骨架代码采用单边搜索把范围限制在 S(1:N/2)就不会乱跳。4.2 测速结果始终是理论值的两倍现象v3.75m/s 时理论 fd 是 250Hz但仿真测出 500Hz速度显示 7.5m/s。原因最常见的做法是把多普勒频移公式用错两次。第一次在算 fd 时写了 2vfc/c第二次在反推速度时又乘了一次 2相当于把单程频移当成双程。还有一种情况是混频时把发射信号写成了 cos(2π(fifd)t)回波也写成 cos(2π(fifd)t)相乘后差频变成 2fd。解决先从手算校验开始。固定 v3.75用计算器算出 fd250.00Hz仿真代码输出也应按近 250Hz。如果显示 500Hz把混频那两行重新抄一遍重点检查 rx 用的是 fd 还是 -fd以及计算 v_est 的公式。我习惯在代码里加一行断言类检查如果误差大于 5%直接报错停止。4.3 门限系数在噪底变化时失灵现象信噪比高时检测正常换一组噪声功率后虚警率飙升或者干脆检测不到目标。原因固定门限比如直接写 threshold 10000遇到 FFT 点数、窗函数、噪声功率变化时噪底电平跟着变化门限却没有自适应。解决用噪底统计替代固定门限。常见做法是取频谱中远离主峰的若干频点求平均幅度再加一个偏移量比如 threshold mean(noise_floor) 15dB。更稳的方案是简单 CFAR把待检测单元两侧的保护单元去掉参考单元平均后乘系数作为门限。大作业里用均值加偏移已经足够说明你理解了这个思路。4.4 模拟运动目标时频谱发散峰值又矮又平现象明明设置了多普勒频移FFT 峰值却不是一根谱线而是摊开的一片峰值位置不稳定。原因仿真时把观察时间分成多段每段重新初始化了相位或者回波信号里混入了与时间无关的随机初相。相参积累的前提是相位跨脉冲连续一旦初相每次变化能量就会在多个谱线上散开。解决统一用全局时间轴构造信号相位表达式写为 2π(fifd)tφ0其中 φ0 只取一次。不要在循环里反复生成新的随机初相。如果是二维矩阵处理慢时间维的相位必须严格按 2πfd·(n-1)/PRF 累加不能每行重置。4.5 报告里时域图和频谱图采样率标错现象答辩时被问“你图里频率轴单位是什么”回答不上来因为代码里直接用了 plot(abs(S))横轴是索引不是频率。原因出图时没有把 FFT 索引映射成频率直接拿默认横坐标当频率轴导致图上的峰值位置与 Hz 对不上读者也无法复现。解决所有频谱图统一用 f_axis(0:N-1)/N*fs 作为横轴并在图上标注“频率(Hz)”。时域图标注“时间(s)”而不是“点数”。我在这里吃过亏之后写了个出图函数内部强制校验横轴数据的最大值是否等于 fs/2避免再犯同样问题。5. 参数扫描与答辩验证让结论从“仿出来了”变成“测准了”5.1 三步参数扫描验证法大作业答辩最怕被问“你这个仿真准不准”。用一组参数仿真成功不算准跑一组速度扫描并把理论值和仿真值放在同一张表里才算有说服力。% sweep_doppler.m 速度扫描验证 function [fd_est, v_est] doppler_measure(v_target, fc_radio, fs, T, fcut) c 3e8; fd 2 * v_target * fc_radio / c; fi 1e3; t (0 : round(fs * T) - 1) / fs; tx cos(2 * pi * fi * t); rx cos(2 * pi * (fi fd) * t 0.5); if_freq tx .* rx; [b, a] butter(5, fcut / (fs / 2), low); baseband filtfilt(b, a, if_freq); N length(baseband); win hann(N); S fft(baseband .* win, N); f_axis (0 : N - 1) / N * fs; [~, idx] max(abs(S(1 : N / 2))); fd_est f_axis(idx); v_est fd_est * c / (2 * fc_radio); end % 扫描不同速度输出误差百分比 v_list [1 2 5 10 20 30]; fprintf(速度(m/s) 理论fd(Hz) 仿真fd(Hz) 误差(%%)\n); for k 1 : length(v_list) v v_list(k); [fd_est, v_est] doppler_measure(v, 10e9, 8e3, 0.2, 2500); fd_true 2 * v * 10e9 / 3e8; err abs(fd_true - fd_est) / fd_true * 100; fprintf(%6.2f %10.2f %10.2f %8.3f\n, v, fd_true, fd_est, err); end逻辑说明把测频流程封装成函数后循环里只改速度结果自动输出误差。fd_true 用同一个双程公式计算这样仿真链路和理论公式之间的偏差可以单独暴露出来。低通截止这里取 2500Hz是为了覆盖 30m/s 时约 2000Hz 的频移。5.2 理论值与仿真值对照表把上面脚本跑完得到类似下面这样一张表直接放进报告附录比写三行“仿真与理论吻合”有用得多。速度(m/s)理论fd(Hz)仿真fd(Hz)误差(%)166.6765.002.505333.33335.000.5010666.67665.000.25302000.002000.000.00注意低速时误差百分比偏大这是频率分辨率 5Hz 造成的属于正常现象。报告里主动解释“低速目标需要更长观察时间才能测准”反而会给答辩加分。从那以后我每做一份大作业仿真都会强制走完一遍参数扫描把理论值和仿真值放进同一张表再截图存档。剂量不值钱但同一个坑掉两次真的冤枉。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

新晋管理者思维进化:从执行者到管理者的三大关键转变

新晋管理者思维进化:从执行者到管理者的三大关键转变

坐上管理位,不是晋升典礼,而是换了一套生存规则。上个月和一个刚带团队的朋友吃饭,他说自己每天累得像狗,组员却觉得他管得太多,上面又嫌他扛不住事。我听完第一反应是:他还在用"超级员工"的方式…

2026/10/13 19:50:42 阅读更多 →
基于电阻应变式传感器的电子秤:从选型到标定的完整设计指南

基于电阻应变式传感器的电子秤:从选型到标定的完整设计指南

简介:这份资源是一份基于电阻应变式传感器的电子秤完整设计文档,面向电子工程、测控技术等相关专业学生,以及嵌入式或称重系统开发爱好者,适用于课程设计、毕业设计和入门实践参考。文档以2kg量程手提电子秤为设计目标&#xff0c…

2026/10/13 19:50:42 阅读更多 →
5大主流数据库安全加固实战手册:身份认证、网络收敛与权限最小化

5大主流数据库安全加固实战手册:身份认证、网络收敛与权限最小化

简介:这是一份面向数据库运维工程师与安全工程师的多数据库安全加固实战手册,覆盖MySQL、SQL Server 2008、Oracle、PostgreSQL及Redis五大主流数据库,系统解决生产环境中身份鉴别薄弱、权限失控、通信明文、日志缺失、配置风险等典型安全问题…

2026/10/13 19:50:42 阅读更多 →

最新新闻

库存扣减的并发控制:乐观锁的应用

库存扣减的并发控制:乐观锁的应用

财务主管跨界写技术文,先交代缘由:公司商城搞限时促销,活动结束对账,账面库存和实物对不上,多卖了四十七件。排查一周,病根是库存扣减没做并发控制,两个请求同时读到同样的库存数,各…

2026/10/14 19:10:22 阅读更多 →
Python案例练习:图书管理系统

Python案例练习:图书管理系统

Python案例练习:图书管理系统、新增图书、查看所有图书、按书名搜索、修改图书信息、删除图书、保存数据到本地文件、从文件加载数据 """ 图书管理系统 新增图书、 查看所有图书、 按书名搜索、 修改图书信息、 删除图书、 保存数据到本地文件、 从文…

2026/10/14 19:10:22 阅读更多 →
防拍照泄密核心知识点合集精讲

防拍照泄密核心知识点合集精讲

在企业数据安全建设过程里,很多运维新人学习防泄密体系都是碎片化的。大多优先关注 U 盘拷贝、聊天软件外发、邮件附件导出这类传统泄密通道,很容易漏掉手机拍摄电脑屏幕这个低成本、高隐蔽性的泄密途径。很多企业投入预算搭建文档加密体系,管…

2026/10/14 19:10:22 阅读更多 →
Keepalived + DRBD 实现 NFS 文件服务高可用:架构、配置与避坑指南

Keepalived + DRBD 实现 NFS 文件服务高可用:架构、配置与避坑指南

简介:这份资源面向运维工程师与VoIP通信系统开发者,聚焦Freeswitch高可用架构的落地实践,通过Keepalived实现主备节点故障自动切换,解决单点故障导致通信服务中断的问题。压缩包共4个文件,约38KB,包含2个Sh…

2026/10/14 19:10:22 阅读更多 →
Reactor 3背压机制深度解析与生产级实践

Reactor 3背压机制深度解析与生产级实践

1. 项目概述:为什么背压不是“可选项”,而是Reactor 3的生存底线 你写完第一个 Flux.create() ,用 onNext() 疯狂发射数据,下游用 subscribe(System.out::println) 接收——一切丝滑。直到某天压测时,控制台突然…

2026/10/14 19:10:22 阅读更多 →
Python车险理赔车型识别与合规校验:数据工程实践指南

Python车险理赔车型识别与合规校验:数据工程实践指南

1. 项目背景与整体设计思路1.1 车型信息在车险理赔中的关键作用车险理赔看起来是“拍照—定损—打款”的简单流程,但真正做过车险数据的人都知道,车型信息是贯穿整个理赔链路的一个隐形骨架。从承保端的车型定价,到理赔端的配件价格与工时费计…

2026/10/14 19:09:21 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →