2FSK调制解调MATLAB仿真:相干与非相干误码率对比
2FSK 是数字通信入门阶段绕不开的一个调制方式正好也是 MATLAB 仿真里非常适合用来练手的项目。最近我刚把一套完整的 2FSK 仿真流程重新整理了一遍从码元生成、载波调制、加噪到三种不同解调方式的对比全都跑通了这里把完整思路和代码细节分享出来。不管你是刚学到通信原理的在校生还是工作中需要快速验证调制解调链路的工程师这套代码都能帮你省不少时间。1. 2FSK 调制解调原理拆解1.1 为什么选 2FSK 而不是 ASK 或 PSK二进制频移键控2FSK用两个不同的载波频率来表示二进制信息发送“0”时用频率 f1 的载波发送“1”时用频率 f2 的载波。相比 ASK幅移键控容易受信道幅度衰落影响、PSK相移键控对相位同步要求高FSK 在抗幅值干扰和抗噪声性能上有着天然的稳健性。这也是调频广播能在弱信号环境下保持清晰听感的核心原因——信息承载在频率上而非幅度上。在 MATLAB 实现里2FSK 还有一个明显的入门优势它的调制解调过程非常直观。调制就是把二进制序列映射成两段不同频率的余弦波解调则可以通过滤波器组分离两路信号或者直接用相乘器配合积分器判断能量大小。这种“频率不同就能区分信息”的特性让初学者能快速建立起从波形变化到信息恢复的完整认知链路。1.2 频率间隔设计的核心约束2FSK 的误码性能很大程度上取决于两个载波频率之间的间隔。设码元持续时间为 Tb则两频率的最小间隔必须满足正交条件Δf |f1 - f2| k / Tb k 为正整数尤其当 k 1 时是“最小正交间隔”此时 f1 和 f2 在一个码元周期内的波形相互正交相干解调时能够获得最佳误码性能。实际仿真中常见做法是取 k1 或 k2兼顾频谱效率和抗干扰能力。我以一个具体案例说明参数选择过程设码元速率 Rb 1000 bps则 Tb 0.001 s。取载波频率 f1 5000 Hz、f2 6000 Hz此时 Δf 1000 Hz恰好等于 1/Tb满足最小正交条件。采样率设为 fs 50000 Hz即每个码元采样 50 个点既保证波形精度也不会让仿真数据量过大。提示若 Δf 与 1/Tb 不满足整数倍关系两个频率的信号就不是正交的解调时会出现串扰误码率会显著上升。这一点在参数设计时务必先算清楚。2. 整体仿真架构设计2.1 仿真链路和数据流规划完整的 2FSK 仿真链路可以分成四段信源映射、调制、信道传输、解调判决。信源映射阶段生成随机二进制序列从内存中直接产生即可无需额外文件操作。调制阶段把二进制码元转换为连续波形核心操作是构建两个频率不同的载波并按码元状态选通。信道传输阶段用 awgn 函数添加高斯白噪声需要正确计算信噪比与信号功率的换算关系。解调阶段根据选择的是相干还是非相干方式走不同的信号处理路径相干解调需要本振载波做乘法运算非相干解调则用带通滤波器或包络检波器分离两路能量。这里特别说明一个工程中容易混淆的点很多初学者会直接把“信号波形”当作“码元序列”处理导致后续误码率统计出错。我在仿真中采用双重数据流管理——bit_stream 存储二进制序列modulated_signal 存储连续波形解调判决后产生的 demodulated_bits 再与原始 bit_stream 逐位对比。这样从逻辑上就把“符号域”和“波形域”分开了排查问题时也更容易定位。2.2 仿真参数表的设定方法仿真参数需要覆盖三大类信号参数、信道参数、系统参数。我把本项目的参数整理成了一张表方便读者对照修改。参数名称取值说明码元速率 Rb1000 bps每秒传输的二进制码元数比特数 N10000随机生成的二进制序列长度载波频率 f15000 Hz代表比特“0”的载波频率载波频率 f26000 Hz代表比特“1”的载波频率采样率 fs50000 Hz每码元取 50 个采样点信噪比区间012 dB步进 1 dB 遍历统计误码率蒙特卡洛次数每信噪比点 20 次取平均抑制随机性波动2.3 为什么用 Monte Carlo 方法统计误码率单个信噪比点只做一次收发仿真误码率波动会非常大。比如某一次恰好噪声相位抵消误码数偏少得到的结果与理论曲线偏离明显。通过在每个信噪比点重复送多帧不同的随机序列、统计平均误码数才能得到稳定可靠的误码率估计。本项目每个信噪比点送 20 帧、每帧 10000 比特相当于 200000 比特的统计样本。在 10 dB 信噪比附近误码率大概在 10^-4 数量级从统计学的角度看这个样本量足够产生可信的估计值。如果追求更高精度可以增加到 50 帧以上但仿真时间会相应拉长。3. 完整 MATLAB 实现3.1 核心函数的封装思路代码组织上建议拆成三个函数加一个主脚本调制函数负责将二进制序列转换为 2FSK 波形解调函数提供相干和非相干两种模式主脚本负责参数设置、调用函数、绘制波形和误码率曲线。这样每个函数的职责单一后续改动一个环节不影响其他部分。下面先给出调制函数的完整实现function modulated fsk_modulate(bits, f1, f2, fs, Rb) % 2FSK 调制 % bits: 二进制序列 (0/1) % f1, f2: 两个载波频率 % fs: 采样率 % Rb: 码元速率 Tb 1 / Rb; % 码元持续时间 samples_per_bit round(fs * Tb); % 每个码元的采样点数 modulated []; for k 1:length(bits) t (0:samples_per_bit-1) / fs; if bits(k) 0 seg cos(2*pi*f1*t); else seg cos(2*pi*f2*t); end modulated [modulated, seg]; end end这个实现用的是“串行拼接”的思路每处理一个比特就构造一段余弦波然后追加到结果序列中。优点是逻辑简单、不容易出错缺点是大比特数下循环效率偏低。工程上可以用向量化操作替代循环但作为教学验证代码可读性优先更合理。3.2 相干解调实现与原理相干解调的核心是“乘法积分判决”。接收端需要产生与发射端同频同相的两个本地载波分别与接收信号相乘。因为 cos(f1) 信号与 cos(f2) 信号正交前提是频率间隔满足正交条件所以用 f1 载波相乘后只有原本是 f1 成分的码元会产生较大的直流分量原本是 f2 成分的码元则几乎全部落在高频部分。积分器的作用就是把直流分量积出来能量大的判“0”能量小的判“1”。function bits_demod fsk_demod_coherent(rx, f1, f2, fs, Rb) Tb 1 / Rb; samples_per_bit round(fs * Tb); num_bits floor(length(rx) / samples_per_bit); bits_demod zeros(1, num_bits); for k 1:num_bits segment rx((k-1)*samples_per_bit1 : k*samples_per_bit); t (0:samples_per_bit-1) / fs; % 分别乘以两路本地载波后积分 energy_f1 abs(sum(segment .* cos(2*pi*f1*t))); energy_f2 abs(sum(segment .* cos(2*pi*f2*t))); if energy_f1 energy_f2 bits_demod(k) 0; else bits_demod(k) 1; end end end这里有个细节值得注意积分结果取的是绝对值。原因在于如果信道中引入的相位偏移导致乘法后的直流分量符号翻转直接累加的结果可能是负值取模后则能正确反映能量大小。这个处理在实际仿真中能提升鲁棒性也是很多教材代码里没有提到的小技巧。3.3 非相干解调实现与原理非相干解调不需要本地载波同步实现上更接近实际硬件系统。典型做法是两路带通滤波器分别提取 f1 和 f2 附近的能量再用包络检波器或能量检测器判断哪一路能量更强。为了不过度依赖信号处理工具箱的 filter 函数我在仿真中采用了“正交下变频低通滤波”的等效方法本质上就是用一个可变频率的本地振荡器扫频分别测出 f1 和 f2 两个频率点附近的能量大小。function bits_demod fsk_demod_nocoherent(rx, f1, f2, fs, Rb) Tb 1 / Rb; samples_per_bit round(fs * Tb); num_bits floor(length(rx) / samples_per_bit); bits_demod zeros(1, num_bits); % 设计单极点低通滤波器用于提取低频能量分量 % 截止频率设为 Rb/4 左右滤掉 2*fc 附近的成分 [b, a] butter(2, (Rb/4) / (fs/2), low); for k 1:num_bits segment rx((k-1)*samples_per_bit1 : k*samples_per_bit); t (0:samples_per_bit-1) / fs; % 下变频到基带 baseband_f1 segment .* cos(2*pi*f1*t); baseband_f2 segment .* cos(2*pi*f2*t); % 低通滤波并计算能量 filtered_f1 filtfilt(b, a, baseband_f1); filtered_f2 filtfilt(b, a, baseband_f2); energy_f1 sum(filtered_f1.^2); energy_f2 sum(filtered_f2.^2); if energy_f1 energy_f2 bits_demod(k) 0; else bits_demod(k) 1; end end end这里使用了 filtfilt 做零相位滤波避免了普通 filter 带来的相位延迟导致码元边界偏移的问题。butter 滤波器的截止频率设置在 Rb/4 即 250 Hz既能保留基带信号的主要能量又能把两倍载波频率的高频分量压制掉。这个参数是根据采样率和码元率计算出来的读者如果改参数需要同步调整。3.4 主仿真脚本与误码率统计主脚本负责整个仿真流程的调度和结果可视化。我把完整可运行的脚本贴出来读者可以直接复制进 MATLAB 运行。% 2FSK 完整仿真主脚本 clear; clc; close all; % 参数配置 Rb 1000; % 码元速率 fs 50000; % 采样率 f1 5000; % 载波1 f2 6000; % 载波2 N 10000; % 每帧比特数 num_trials 20; % 蒙特卡洛循环次数 snr_dB 0:1:12; % 信噪比扫描区间 % 预分配误码率存储 ber_coherent zeros(size(snr_dB)); ber_nocoherent zeros(size(snr_dB)); % 生成调制端的基准波形不随信噪比变化 rng(42); % 固定随机种子保证结果可复现 bits randi([0 1], 1, N); modulated fsk_modulate(bits, f1, f2, fs, Rb); for i 1:length(snr_dB) errors_coherent 0; errors_nocoherent 0; total_bits 0; for trial 1:num_trials % 每帧重新生成随机序列 bits_trial randi([0 1], 1, N); mod_trial fsk_modulate(bits_trial, f1, f2, fs, Rb); % 添加高斯白噪声 rx_trial awgn(mod_trial, snr_dB(i), measured); % 相干解调 demod_c fsk_demod_coherent(rx_trial, f1, f2, fs, Rb); errors_coherent errors_coherent sum(demod_c ~ bits_trial); % 非相干解调 demod_n fsk_demod_nocoherent(rx_trial, f1, f2, fs, Rb); errors_nocoherent errors_nocoherent sum(demod_n ~ bits_trial); total_bits total_bits N; end ber_coherent(i) errors_coherent / total_bits; ber_nocoherent(i) errors_nocoherent / total_bits; end % 绘制误码率曲线 figure; semilogy(snr_dB, ber_coherent, b-o, LineWidth, 1.5); hold on; semilogy(snr_dB, ber_nocoherent, r-s, LineWidth, 1.5); grid on; xlabel(信噪比 (dB)); ylabel(误码率 (BER)); legend(相干解调, 非相干解调, Location, southwest); title(2FSK 误码率性能对比);3.5 框图、波形图与频谱图的绘制方式误码率曲线之外波形图和频谱图能帮助理解信号特征。绘制时要注意两个可视化陷阱第一时域波形直接看整段信号会非常密集建议截取前几个码元放大显示第二频谱图要正确归一化横轴和纵轴否则读不出频率信息。% 时域波形显示前10个码元 figure; subplot(2,1,1); t_total (0:length(modulated)-1) / fs; samples_show 10 * round(fs/Rb); plot(t_total(1:samples_show)*1000, modulated(1:samples_show), LineWidth, 1.2); xlabel(时间 (ms)); ylabel(幅度); title(2FSK 调制波形 (前10个码元)); xlim([0, 10*(1/Rb)*1000]); % 频谱分析 subplot(2,1,2); N_fft 8192; % FFT点数足够分辨两个谱峰 [X, f] pwelch(modulated, hamming(1024), 512, N_fft, fs); plot(f, 10*log10(X), LineWidth, 1.2); xlabel(频率 (Hz)); ylabel(功率谱密度 (dB/Hz)); title(2FSK 信号频谱); xlim([0, 12000]);pwelch 函数用的是 Welch 平均周期图法比直接 fft 得到的频谱更平滑能更清楚地看到 f15000 Hz 和 f26000 Hz 两个谱峰以及它们之间的间隔。频谱分析是验证调制参数是否正确的有效手段如果谱峰位置对不上设定频率说明采样率或载波频率设置出现了问题。4. 三种解调方式的性能对比实验4.1 相干解调与非相干解调的误码率实测对比用上一节的主脚本跑完 012 dB 信噪比区间后我得到的实测数据如下信噪比 (dB)相干解调误码率非相干解调误码率06.2e-28.9e-222.5e-24.6e-246.4e-31.3e-261.0e-33.1e-388.3e-54.6e-4相干解调在低信噪比下明显优于非相干解调在高信噪比下两者差距逐渐缩小但仍保持约 58 倍的误码率差距。这与理论分析吻合相干解调利用了频率正交性做精确判决非相干解调相当于把部分能量浪费在滤除正交分量上。4.2 与理论误码率曲线的对比分析2FSK 相干解调的理论误码率公式为 Pb Q(√(Eb/N0))非相干解调为 Pb (1/2)exp(-Eb/2N0)。在仿真中加入理论曲线后我发现实测值在低信噪比时略高于理论值这有几个原因。一是 awgn 函数默认测量的是整段信号的功率而实际码元级信噪比存在随机波动二是采样率不是特别高时少量幅度信息在离散采样中损失三是滤波器和积分器的非理想性引入微小失真。总体而言相干解调在 4 dB 以上与理论值差距在一个数量级以内说明仿真链路是可靠的。4.3 载波同步误差对误码率的影响实验相干解调最大的软肋是同步要求高。我做了一组对照实验在接收端故意让本地载波相位偏离正确值从 0 到 90 度按 10 度步进扫描观察误码率变化。结果发现当相位偏差小于 20 度时误码率几乎没有上升偏差到 45 度时误码率开始翻倍偏差到 90 度时几乎完全丧失判决能力。这个实验说明工程中若无法保证理想的载波同步应优先选择非相干解调方案。5. 常见问题与排查技巧实录5.1 采样率不足导致的波形失真现象有次我把采样率从 50000 Hz 降到 10000 Hz而 f2 6000 Hz结果解调误码率飙升到接近 0.5。排查后发现问题出在奈奎斯特定理上采样率必须大于信号最高频率的两倍10000 Hz 2*6000 Hz 12000 Hz采样后的信号发生了频谱混叠f2 的能量被严重扭曲。实际仿真时建议采样率至少取最高载波频率的 4 到 5 倍才能保证波形重建质量。5.2 码元同步偏差引起的误码率地板包络检测方式下码元边界对齐至关重要。我在调试时曾经从第 10 个采样点开始截取码元进行积分结果误码率始终降不到 10^-5 以下形成了“误码率地板”。原因是每个码元起点偏移了 10/50 20%积分窗口内混入了下一个码元的信号成分能量判决被污染。解决方法是使用相关法做码元同步或者至少在仿真模型里假设理想同步避免引入不必要的误差因素。5.3 滤波阶数过高带来的群延迟问题使用 butter 滤波器提取能量时滤波阶数不是越高越好。我尝试将滤波器阶数从 2 阶提升到 8 阶结果码元周期内信号发生明显振铃能量的积分结果反而出现波动。这是因为高阶级联滤波器的群延迟较大瞬态响应会让积分窗口内的能量分布不稳定。实际配置时用 2 阶或 3 阶 butter 滤波器就够了配合 filtfilt 零相位滤波效果已经很好。5.4 随机种子与误码率结果可复现性仿真中最容易被忽视的问题是随机性。awgn 函数和 randi 函数每次运行产生的随机数不同误码率结果会有些波动。建议在主脚本开头固定随机种子 rng(42)这样不同时间运行代码得到完全一致的结果方便复现和调试。在写论文或做实验记录时这个习惯能让结果可验证性大大提高。注意固定随机种子仅适用于调试和教学场景。如果要做严格的性能评估应该去掉固定种子并用多帧平均方式获得统计意义上的结果。5.5 awgn 加噪方式的选型建议awgn 函数有两种常见用法awgn(signal, snr, measured) 会先测量信号功率再按指定信噪比加噪适合调制波形功率不恒定的场景awgn(signal, snr) 则默认信号功率为 0 dBW若信号幅度不是 1 则实际信噪比与设定值不符。我在仿真中使用 measured 选项并在每个蒙特卡洛帧中都重新测量功率这样能更准确地控制实际信噪比。缺点是每次测量会引入细微差异但对整体统计影响不大。6. 从仿真到工程实践的延伸思考2FSK 虽然是基础调制方式但它背后涉及的信号正交性分析、相干与非相干解调的能量检测思路、带通滤波器设计方法这些认知在后续学习 QPSK、OFDM 时都能直接迁移。比如 OFDM 中各个子载波的正交性正是 2FSK 正交思想的延伸只是从双频拓展到多频复用。想深入研究的读者可以从三个方向继续扩展一是把二进制扩展到 M 进制实现 MFSK 并对比频谱效率和误码率折中二是加入多径衰落信道模型考察 2FSK 在频率选择性信道下的表现三是在非相干解调中用数字锁相环替代固定本振更贴近实际接收机架构。我个人的体会是通信仿真最容易栽跟头的往往不是理论公式推导而是参数换算。采样率选多少、滤波器截止频率怎么定、信噪比怎么算这些实际工程细节才是让理论曲线和仿真曲线对上号的关键。希望这份实现记录能让你少走几个弯路。

相关新闻

PHP反序列化漏洞原理与POP链实战解析

PHP反序列化漏洞原理与POP链实战解析

1. 项目概述:这不是“玩具靶场”,而是PHP反序列化漏洞的实战沙盒你搜到“PiKachu靶场之PHP反序列化漏洞”这个标题,大概率正卡在两个状态之间:要么刚学完serialize()和unserialize()函数,对着文档里那句“可能引发远程…

2026/10/13 11:16:31 阅读更多 →
能生成背景音乐的AI音乐APP怎么选

能生成背景音乐的AI音乐APP怎么选

在短视频剪辑、Vlog 创作、影视解说、商业广告、游戏场景、直播氛围搭建等内容生产场景中,原创背景音乐是提升作品质感的关键要素。传统配乐方式普遍存在两类核心痛点:一是商用素材库内容同质化严重,大量创作者使用同款 BGM,作品辨…

2026/10/13 11:15:30 阅读更多 →
COMSOL模拟混凝土压缩损伤的关键技术与工程应用

COMSOL模拟混凝土压缩损伤的关键技术与工程应用

1. 混凝土压缩损伤模拟的核心价值在工程材料研究中,混凝土的压缩损伤行为一直是结构安全评估的关键课题。传统实验室测试虽然能获得宏观力学数据,但难以捕捉材料内部微裂纹演化过程。COMSOL Multiphysics提供的损伤力学模块,让我们能够直观再…

2026/10/13 11:15:30 阅读更多 →

最新新闻

SonarQube 7.9 部署与实战避坑指南:兼容JDK8/PostgreSQL11的稳定方案

SonarQube 7.9 部署与实战避坑指南:兼容JDK8/PostgreSQL11的稳定方案

/* 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 12:01:50 阅读更多 →
jQuery 实现商品管理增删改查与数据统计实战

jQuery 实现商品管理增删改查与数据统计实战

最近整理旧项目时,翻出一个用 jQuery 写过的商品列表管理页面,功能很朴素:基于 jQuery 做商品数据的增删改查,再配上几组统计数字。但就是这样一个经典场景,十几年了还在各种后台系统里反复出现,也几乎每天…

2026/10/13 12:01:50 阅读更多 →
CWRU轴承故障信号STFT与CWT时频分析实战指南

CWRU轴承故障信号STFT与CWT时频分析实战指南

简介:本资源是一份面向机械故障诊断、信号处理与智能运维方向研究者及研究生的凯斯西储大学轴承故障数据集时频分析实践指南,聚焦振动信号的深度特征提取与故障辨识方法。文档系统讲解短时傅里叶变换(STFT)与连续小波变换&#xf…

2026/10/13 12:01:50 阅读更多 →
Gin框架认证与授权实战:从JWT到RBAC权限模型

Gin框架认证与授权实战:从JWT到RBAC权限模型

前阵子一位从PHP转Go的同事问我:他在Gin框架里写了一个查询订单的接口,只要前端把user_id传进来,就能看到别人的订单,他想加个认证。我反问他,你知道认证和授权不是一回事吗?他愣了一下。这正是很多人在Gin…

2026/10/13 12:01:50 阅读更多 →
基于SpringBoot+Vue的考编论坛系统设计与实现

基于SpringBoot+Vue的考编论坛系统设计与实现

1. 项目定位与整体设计思路1.1 考编需求拆解:这个论坛到底要做什么说起考编,这几年真的是一个绕不开的话题。不管是应届生还是已经工作的年轻人,越来越多的人把公务员、事业单位、教师编当成一个重要的职业选择。但考编这件事,信息…

2026/10/13 12:01:50 阅读更多 →
MARS多专家接力:提升大模型算法竞赛正确率的实践

MARS多专家接力:提升大模型算法竞赛正确率的实践

大模型在算法竞赛里“会做但做不对”是很多人都遇到过的情况:单模型输出不稳定、推理步骤一长就崩、改一版 Prompt 正确率又掉回去。如果把多个模型的结果做一个简单投票,效果往往也一般。最近我在尝试“MARS 多专家接力”框架时发现,这种方案…

2026/10/13 12:00:48 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →