雷达导引头系统建模仿真:从需求到验收的完整方案
简介这份雷达导引头系统建模仿真资源面向电子信息、雷达工程及信号处理方向的本科生与研究生尤其适合正在做毕业设计或课题实践的学习者。内容围绕雷达导引头的物理特性、工作原理与典型应用场景展开通过数学建模与计算机仿真预测系统性能、优化设计参数帮助读者在实物制造前完成设计迭代。资源包为zip格式压缩包约178.83MB文件总数与类型明细上游暂未提供但整体体量适合本地部署与离线查阅。目前已有298人学习下载具备一定参考热度。读者可从中获取雷达信号产生与传输、目标检测与跟踪、信号处理与数据融合、系统性能评估、用户界面设计以及软硬件协同等关键环节的建模思路并了解MATLAB/Simulink、ADS、STK等仿真工具的运用方式为毕业设计选题、仿真框架搭建与性能验证提供可借鉴的工程化参考。1. 雷达导引头系统建模仿真从需求到验收的完整方案雷达导引头是精确制导武器的核心部件它要在极短的时间内完成目标搜索、截获、跟踪和参数输出。直接上实物做外场试验单次成本高、周期长、边界条件还很难复现。所以工程上通常先做系统级建模仿真把信号处理链路、天线方向图、平台运动学和干扰环境都搬到计算机里跑一遍确认算法逻辑没问题再上硬件。这套方案面向做毕业设计或课程设计的学生也适合需要快速搭建导引头仿真验证环境的从业者。整份资源围绕一个可运行的仿真系统展开包含信号级建模、模块划分、参数配置和验收指标拿到手就能按章节复现也能直接替换参数适配自己的课题方向。2. 需求分析与技术选型为什么这么定2.1 功能需求拆解导引头仿真系统要解决的核心问题不是“画个雷达界面”而是把从发射信号到输出目标角度信息的完整链路跑通。具体拆成四条需求第一能生成线性调频、相位编码等典型发射波形第二能模拟目标回波包括时延、多普勒频移和幅度起伏第三能实现脉冲压缩、动目标检测和恒虚警率检测这条信号处理链第四能输出目标距离、速度和角度信息并支持与预设真值对比。这四条需求对应毕设里常见的“信号级仿真”和“功能级仿真”两个层次本方案走的是信号级路线因为功能级虽然跑得快但答辩时容易被问“你的检测概率怎么来的”信号级能拿出原始数据说话。2.2 技术栈选择与理由仿真平台选 Python 加 NumPy/SciPy 组合不选 MATLAB 的原因有两个一是 Python 生态里 SciPy 的信号处理函数足够覆盖脉冲压缩和滤波器设计二是毕设查重和代码提交时 Python 的工程结构更清晰。可视化用 Matplotlib界面如果需要交互就用 PyQt5 搭一层壳。核心计算全部走 NumPy 向量化避免 Python 循环拖慢仿真速度。这里有个血泪经验很多人一开始用 for 循环逐点生成回波跑一次仿真要几分钟改成矩阵运算后同样的场景两秒出结果。参数配置统一走 YAML 文件方便改雷达频率、带宽、脉冲重复频率这些关键值不用翻代码。2.3 仿真粒度与实时性权衡信号级仿真最怕的是采样率设太高导致内存爆炸。假设雷达带宽 10 MHz中频采样率按 40 MHz 算一个脉冲重复周期 100 微秒单通道单脉冲就是 4000 个采样点。如果做 64 脉冲相干积累数据量是 25.6 万点复数存储约 4 MB还能接受。但如果采样率提到 200 MHz同样条件直接涨到 20 MB多通道再翻倍普通笔记本就跑不动了。通常的做法是先按带宽的 2.5 到 4 倍设采样率跑通全链路后再根据验收指标决定要不要提高。如果答辩要求展示高分辨率一维距离像再单独把采样率调上去只跑单脉冲不跑全相干积累。3. 总体架构设计三层结构与六个模块的职责划分3.1 分层架构说明整个仿真系统分三层场景层、信号层和评估层。场景层负责定义平台运动、目标位置和干扰样式输出的是随时间变化的几何关系信号层接收场景层给出的距离和角度生成发射信号、回波信号再走完整的处理链评估层拿信号层的输出和场景层的真值做对比算检测概率、测距误差和测角误差。三层之间通过结构体传数据不直接共享全局变量。这样拆的好处是改场景不用动信号处理代码换处理算法也不影响场景定义。我一般会在场景层和信号层之间加一个“参数校验”步骤检查距离是否超出雷达方程有效范围、速度是否导致多普勒模糊避免跑完才发现数据无效。3.2 模块划分与接口定义六个核心模块分别是波形生成模块、回波模拟模块、脉冲压缩模块、动目标检测模块、恒虚警率检测模块和参数估计模块。波形生成输出复数基带信号长度由采样率和脉宽决定回波模拟接收波形和场景参数输出叠加了噪声和干扰的回波矩阵维度是“快时间×慢时间”脉冲压缩用匹配滤波实现输出距离维压缩后的数据动目标检测做多普勒滤波器组处理输出距离-多普勒二维图恒虚警率检测在二维图上做门限判决输出过门限的点迹参数估计从点迹里提取距离和角度输出最终结果。模块之间用 NumPy 数组传递不搞复杂的类继承保持接口简单。3.3 数据流与关键参数传递数据流是单向的场景参数 → 波形 → 回波 → 脉压 → 动目标检测 → 恒虚警率 → 参数估计 → 评估。关键参数包括雷达工作频率、发射带宽、脉冲宽度、脉冲重复频率、采样率、相干积累脉冲数、检测门限。这些参数全部写在 YAML 配置文件里代码启动时读入一个字典各模块按需取用。这里有个容易翻车的地方脉冲重复频率和最大不模糊距离是绑定的如果场景里目标距离超过最大不模糊距离回波会折叠到近距离仿真结果完全错。通常的做法是在场景层加一个断言检查目标距离是否小于光速除以两倍脉冲重复频率不满足就直接报错退出别让错误数据流到后面。# radar_config.yaml radar: fc: 10e9 # 工作频率 10 GHz bandwidth: 10e6 # 发射带宽 10 MHz pulse_width: 10e-6 # 脉宽 10 微秒 prf: 5000 # 脉冲重复频率 5 kHz fs: 40e6 # 采样率 40 MHz num_pulses: 64 # 相干积累脉冲数 cfar_guard: 2 # 恒虚警率保护单元数 cfar_ref: 8 # 恒虚警率参考单元数 threshold_db: 12 # 检测门限 dB上面这段配置里prf设 5000 Hz 对应最大不模糊距离约 30 公里fs是带宽的 4 倍满足带通采样要求。num_pulses决定多普勒分辨率64 个脉冲在 5 kHz 重频下多普勒分辨率约 78 Hz。cfar_guard和cfar_ref控制恒虚警率检测器的参考窗大小保护单元防止目标能量泄漏到参考单元里导致门限抬高。这些值不是随便填的改任何一个都要重新检查模糊问题和分辨率是否满足场景需求。4. 核心模块实现从波形到点迹的代码落地4.1 线性调频波形生成线性调频信号是导引头最常用的波形因为它能同时获得大带宽和长脉宽通过脉冲压缩拿到高距离分辨率。实现上就是复指数加二次相位项。import numpy as np def generate_lfm(bandwidth, pulse_width, fs): 生成线性调频基带信号 bandwidth: 调频带宽 Hz pulse_width: 脉宽 秒 fs: 采样率 Hz 返回: 复数基带信号数组 num_samples int(pulse_width * fs) t np.arange(num_samples) / fs k bandwidth / pulse_width # 调频斜率 # 基带信号: exp(j * pi * k * t^2) signal np.exp(1j * np.pi * k * t**2) return signal这段代码里k是调频斜率单位 Hz/s决定了信号频率在脉宽内的变化速率。t是快时间轴长度由脉宽和采样率决定。生成的信号是复数基带形式实部虚部分别对应 I/Q 两路。注意这里没有加窗实际工程里为了抑制距离旁瓣通常会在脉压前加汉明窗或泰勒窗但加窗会展宽主瓣约 1.3 到 1.5 倍需要根据验收指标权衡。4.2 目标回波模拟与噪声叠加回波模拟要算三件事时延、多普勒频移和幅度。时延由目标距离决定多普勒由径向速度决定幅度由雷达方程算。慢时间维度上每个脉冲的回波相位随目标运动变化这个变化就是多普勒信息的来源。def simulate_echo(waveform, target_range, target_velocity, prf, fs, fc, c3e8): 模拟单个目标的回波 waveform: 发射基带信号 target_range: 目标初始距离 米 target_velocity: 径向速度 米/秒 prf: 脉冲重复频率 Hz fs: 采样率 Hz fc: 载频 Hz 返回: 回波矩阵 (快时间 x 慢时间) num_pulses 64 num_fast len(waveform) echo np.zeros((num_fast, num_pulses), dtypecomplex) for m in range(num_pulses): # 当前脉冲时刻的目标距离 r target_range - target_velocity * m / prf delay 2 * r / c # 时延对应的采样点偏移 shift int(delay * fs) if 0 shift num_fast: # 多普勒相位 doppler_phase np.exp(-1j * 4 * np.pi * fc * target_velocity * m / (c * prf)) echo[shift:shiftlen(waveform)//2, m] waveform[:len(waveform)//2] * doppler_phase # 加高斯白噪声 noise (np.random.randn(*echo.shape) 1j * np.random.randn(*echo.shape)) / np.sqrt(2) echo noise * 0.1 return echo这里delay是双程时延shift是时延对应的采样点。多普勒相位项doppler_phase里有个 4π 因子因为双程传播导致相位变化是单程的两倍。噪声功率设为 0.1 是经验值实际要根据信噪比要求反推。注意回波只填了前半段波形这是简化处理真实场景里整个波形都会搬移但为了代码简洁和运行速度通常只取有效部分。如果做长时间相干积累目标可能走出距离单元那就需要做距离走动校正这是进阶内容毕设里如果目标速度不高可以不做。4.3 脉冲压缩与动目标检测脉冲压缩就是匹配滤波频域实现比时域快。动目标检测是在慢时间维度做傅里叶变换把不同多普勒频率的目标分开。def pulse_compress(echo, waveform): 频域脉冲压缩 num_fast, num_pulses echo.shape nfft 2 ** int(np.ceil(np.log2(num_fast len(waveform) - 1))) # 匹配滤波器是发射信号的共轭翻转 matched_filter np.conj(waveform[::-1]) H np.fft.fft(matched_filter, nfft) compressed np.zeros((nfft, num_pulses), dtypecomplex) for m in range(num_pulses): E np.fft.fft(echo[:, m], nfft) compressed[:, m] np.fft.ifft(E * H) return compressed[:num_fast, :] def mtd_processing(compressed): 动目标检测: 慢时间维 FFT # 加汉明窗抑制多普勒旁瓣 window np.hamming(compressed.shape[1]) weighted compressed * window[np.newaxis, :] mtd_result np.fft.fftshift(np.fft.fft(weighted, axis1), axes1) return mtd_resultpulse_compress里nfft取 2 的整数次幂是为了 FFT 效率匹配滤波器是发射信号的时间反转共轭。mtd_processing里加汉明窗是标准操作不加的话多普勒旁瓣很高弱目标会被强目标旁瓣淹没。fftshift把零频移到中心方便后续检测。这里有个坑如果脉冲数不是 2 的整数次幂FFT 会自动补零补零不会提高分辨率但会让频谱看起来更平滑答辩时如果被问到“你的多普勒分辨率是多少”要按实际脉冲数算不能按补零后的点数算。4.4 恒虚警率检测与参数估计恒虚警率检测用单元平均方法在距离-多普勒二维图上滑窗用参考单元的平均功率乘门限因子作为判决门限。参数估计从过门限的点迹里找最大值位置换算成距离和速度。def ca_cfar_2d(mtd_result, guard, ref, threshold_db): 二维单元平均恒虚警率检测 num_fast, num_doppler mtd_result.shape power np.abs(mtd_result) ** 2 threshold 10 ** (threshold_db / 10) detections [] for i in range(guard ref, num_fast - guard - ref): for j in range(guard ref, num_doppler - guard - ref): # 参考单元: 去掉保护单元后的矩形环 ref_cells np.concatenate([ power[i-ref-guard:i-guard, j-ref-guard:jrefguard1].ravel(), power[iguard1:iguardref1, j-ref-guard:jrefguard1].ravel(), power[i-guard:iguard1, j-ref-guard:j-ref].ravel(), power[i-guard:iguard1, jref1:jrefguard1].ravel() ]) noise_level np.mean(ref_cells) if power[i, j] noise_level * threshold: detections.append((i, j, power[i, j])) return detections这段代码里guard是保护单元数防止目标能量泄漏到参考窗ref是参考单元数决定噪声估计的平滑程度。threshold_db设 12 dB 对应虚警概率大约 1e-4 量级具体值要根据噪声分布算。检测输出是过门限点的坐标和功率。参数估计就是从detections里找功率最大的点距离等于i乘以距离分辨率速度等于j对应的多普勒频率乘以波长除以二。注意恒虚警率检测在二维图上做计算量不小如果跑得慢可以先把功率图做降采样或者只在距离维做一维恒虚警率再在速度维做峰值提取这是工程上常用的折中。5. 避坑与常见问题仿真跑不通时先查这几条5.1 回波信号完全对不齐现象是脉冲压缩后峰值位置和预设距离差很多甚至找不到峰值。原因通常是时延计算用了单程距离或者采样点偏移取整时丢了小数部分。解决方法是检查delay 2 * r / c里的因子 2 有没有漏以及shift取整后是否应该用插值代替直接截断。如果距离分辨率要求高直接取整会导致半个采样点的误差通常的做法是在频域加线性相位实现小数延迟。5.2 多普勒频率符号反了现象是动目标检测后目标出现在多普勒维的错误一侧正速度目标跑到负频率。原因是多普勒相位公式里符号约定不统一。发射信号用exp(j*2*pi*fc*t)还是exp(-j*2*pi*fc*t)回波相位是加还是减必须全链路一致。我一般会在代码开头注释里写清楚符号约定所有模块统一按这个来避免改了一个地方忘了另一个。5.3 恒虚警率检测门限高得离谱现象是明明信噪比很高但恒虚警率检测一个点都过不了。原因可能是参考单元里混进了目标能量把噪声均值抬高了。解决方法是增大保护单元数或者改用有序统计恒虚警率取参考单元的中值而不是均值。另一个可能是门限因子算错了threshold_db转线性时用了 10 倍还是 20 倍要确认清楚功率比是 10 倍幅度比是 20 倍。5.4 仿真跑一次要等好几分钟现象是代码逻辑没问题但速度慢得没法调参。原因基本是 Python 循环没改成向量化。检查所有for循环能改成 NumPy 矩阵运算的全部改掉。回波模拟里的慢时间循环可以改成用np.exp直接生成相位矩阵脉冲压缩里的逐脉冲 FFT 可以改成np.fft.fft(echo, nfft, axis0)一次算完。改完之后速度通常能提升一个数量级。5.5 距离-多普勒图上一片模糊现象是动目标检测结果里全是噪声看不到明显峰值。原因可能是相干积累脉冲数太少多普勒增益不够也可能是噪声功率设得太大信噪比太低。解决方法是先把噪声关掉跑一遍确认无噪声时峰值正确再逐步加噪声看检测性能。如果无噪声都不对那就是信号处理链有问题跟噪声无关。6. 验收与答辩怎么证明你的仿真可信验收的核心思路是“真值对比加指标量化”。场景层生成目标时记录真实距离和速度信号层处理完输出估计值评估层算误差。通常要给出三张图第一张是距离-多普勒二维图标出检测到的点迹和真值位置第二张是测距误差随信噪比变化的曲线看是否收敛到理论分辨率以内第三张是检测概率随信噪比变化的曲线和理论值对比。这三张图能覆盖毕设答辩里八成以上的提问。具体指标怎么定测距误差在信噪比大于 13 dB 时应该小于距离分辨率的一半测速误差小于多普勒分辨率的一半检测概率在信噪比 13 dB 时不低于 0.9。这些数字不是死的根据你的带宽和脉冲数算。比如带宽 10 MHz 对应距离分辨率 15 米那测距误差小于 7.5 米算合格。多普勒分辨率等于脉冲重复频率除以脉冲数5000 除以 64 约 78 Hz对应速度分辨率约 1.17 米每秒按 10 GHz 载频算测速误差小于 0.6 米每秒算合格。答辩时最容易被问的三个问题一是“你的仿真和实测差多少”这个要诚实回答仿真通常偏乐观因为没考虑通道不一致性和平台振动可以说“在理想条件下验证算法逻辑实测需要加通道校准”二是“为什么选这个恒虚警率门限”要能说出虚警概率和门限因子的换算关系三是“仿真速度能不能满足实时性”要能说出单帧处理耗时和脉冲重复周期的比值如果大于 1 就要解释哪些步骤可以并行化或降采样。我一般会在答辩前把整个仿真跑三遍第一遍用默认参数确认全链路通第二遍改信噪比跑蒙特卡洛看曲线是否平滑第三遍把配置文件改回默认再跑一次确认没有残留的调试代码。从那以后我每次交方案前都强制走一遍这个流程避免现场翻车。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Redis分布式集群入门:核心数据结构、持久化与高可用基础

Redis分布式集群入门:核心数据结构、持久化与高可用基础

1. 从单机缓存到分布式集群:Redis到底解决了什么问题很多人第一次接触Redis,是因为项目里某个接口慢得让人抓狂——数据库查询要几百毫秒,并发一上来直接打满连接池。这时候老同事通常会甩过来一句"加个Redis缓存吧",然…

2026/10/18 3:22:16 阅读更多 →
三阶连续时间Delta-Sigma ADC的Matlab仿真与噪声整形设计

三阶连续时间Delta-Sigma ADC的Matlab仿真与噪声整形设计

简介:这是一份面向模拟集成电路与信号处理学习者的3阶连续时间Delta-Sigma ADC Matlab仿真代码,适合具备一定ADC理论基础、希望深入理解CTSDM架构与性能评估的工程师或研究生。资源包共10个文件,包含3个m脚本、3篇pdf参考论文、1个mdl Simuli…

2026/10/18 3:22:16 阅读更多 →
Java游戏矩形碰撞检测实战:从原理到工业级优化

Java游戏矩形碰撞检测实战:从原理到工业级优化

1. 这不是数学题,是游戏里“撞上就该有反应”的真实逻辑“Java游戏中的矩形碰撞检测”——这八个字背后,藏着无数新手在写第一个贪吃蛇、推箱子或横版跳跃游戏时卡住的三小时。它看起来像小学数学里的“两个长方形有没有重叠”,但实际运行中&…

2026/10/18 3:21:15 阅读更多 →

最新新闻

OpenClaw语音控制实战:多用户语音识别与声纹认证的权限隔离方案

OpenClaw语音控制实战:多用户语音识别与声纹认证的权限隔离方案

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

2026/10/18 4:19:29 阅读更多 →
昇腾NPU强化学习迁移指南:从DQN到PPO的避坑与提速实践

昇腾NPU强化学习迁移指南:从DQN到PPO的避坑与提速实践

1月29号晚上那场《昇腾NPU强化学习案例》直播,我全程看完了。作为在GPU上跑了两三年强化学习、最近因为成本和资源原因开始评估昇腾NPU的人,直播里提到的报错、性能瓶颈和迁移细节,几乎把我踩过的坑全过了一遍。这篇不是录播的文字稿&#xf…

2026/10/18 4:19:29 阅读更多 →
ai大模型(一)

ai大模型(一)

0.认识大模型1.大模型计量单位2.大模型分类3.大模型训练环节4.大模型如何落地5.工程化几个模块-如何访问大模型6.提示词工程几个要素

2026/10/18 4:19:29 阅读更多 →
RAG效果差?从分块、检索、重排到Prompt的全链路优化指南

RAG效果差?从分块、检索、重排到Prompt的全链路优化指南

1. 先搞清楚:你的RAG为什么效果差?——全链路优化的起点做RAG(检索增强生成)这个方向的人,多半都经历过这种尴尬:辛辛苦苦把文档灌进知识库,上线一问,答得前言不搭后语,引…

2026/10/18 4:19:29 阅读更多 →
Umi-OCR 免费离线 OCR 工具:3 分钟上手,截图抠文字、扫描件能搜索

Umi-OCR 免费离线 OCR 工具:3 分钟上手,截图抠文字、扫描件能搜索

Umi-OCR 免费离线 OCR 工具:3 分钟上手,截图抠文字、扫描件能搜索 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生…

2026/10/18 4:19:29 阅读更多 →
用anime.js实现无缝滚动走马灯:原理、踩坑与完整方案

用anime.js实现无缝滚动走马灯:原理、踩坑与完整方案

我在给运营后台做公告滚动条的时候,被“走马灯”这个看似不起眼的小组件卡了整整一个下午。需求列出来其实没几条:公告项一行或两行横向滚动,鼠标悬停时暂停、移开继续,窗口从桌面缩到平板时不能出现空白断层,内容列表…

2026/10/18 4:18:29 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →