2FSK调制解调系统设计与MATLAB仿真实战:从参数设置到误码率曲线
简介一份围绕2FSK二进制频移键控调制与解调系统设计与仿真的课程设计文档基于MATLAB7.0完成适合通信工程、电子信息类学生作为通信原理课程设计、仿真实验或期末报告的参考资料。文档从设计任务和方案论证出发逐步展开信源产生、发送滤波、加性高斯白噪声信道、接收滤波、相干解调与信宿处理等完整通信链路并详细说明了采用开关法产生2FSK信号的原因以及相干解调相比非相干解调在抗噪声性能上的优势。文档中还包含可直接运行的MATLAB源程序配合仿真波形图和SNR-误码率曲线可帮助读者理解数字调制系统建模与性能评价方法并在其基础上进行参数修改和功能扩展。整个压缩包仅含一个doc文件总大小579KB结构完整、内容精炼。目前已有853人浏览学习适合需要快速完成2FSK课程设计、撰写设计报告或强化MATLAB仿真能力的学生。1. 2FSK调制解调仿真在设计什么一个能解释信号、噪声与判决的完整模型如果你的通讯系统原理课程设计题目是“2FSK调制与解调系统设计与仿真”大概率不只是要一张波形图。老师真正想看的是你能不能把频移键控、相干与非相干解调、滤波器带宽、误码率统计这一整条链路串起来并且解释清楚每个参数为什么这么定。做完这个题目你应该能回答三个问题2FSK信号在频域长什么样、接收端怎么做判决、仿真结果和理论误码率曲线对不上时去哪找原因。这篇文章就按我做课设和带毕设时的路径把参数设计、可复现代码、误码率统计和踩过的坑一次讲完。2. 2FSK参数设计先定码元速率再推出载频与滤波器带宽2.1 2FSK信号表达式与两种调制方式相位连续为什么更常用2FSK的数学表达式不复杂发送比特0时输出频率为f1的正弦波发送比特1时输出频率为f2的正弦波。写成通式就是s(t)A·cos(2πf1tφ1)对应0A·cos(2πf2tφ2)对应1。真正区分实现水平的是相位φ怎么处理。常见做法有两种键控法和相位连续法。键控法直接拿两个独立振荡器输出做电子开关切换好处是模型简单、仿真代码好写坏处是切换瞬间相位会跳变。这个跳变在频谱上表现为很宽的旁瓣实际系统里会浪费频带也会让接收端滤波器更难设计。相位连续法用一个振荡器靠改变瞬时频率来调制相位始终保持连续频域能量更集中这也是工程上更常见的CPFSK实现思路。课程设计里我建议直接用相位连续法理由很实际代码只多两行但波形和频谱都要干净得多答辩时解释起来也更站得住脚。代码实现上不需要真的去建一个VCO模型只需要对频率做积分再取余弦这是最常用的离散仿真手法。2.2 参数设计顺序码元速率、采样率、载频和频偏的取值逻辑很多人在课程设计第一步就卡住不知道载频该取多少千赫兹。我的经验是先定码元速率Rb再反推其他参数。码元速率决定数据吞吐量一般取1kbps或10kbps方便计算。载频要满足两个约束远大于码元速率让每个码元里至少有好几个完整的载波周期同时采样率要满足奈奎斯特条件也就是大于两倍最高载频。频偏Δff2−f1是2FSK最重要的参数通常用调制指数hΔf/Rb来描述。h大于1的是宽带2FSK两个频率分得开解调容易代价是占用带宽大h小于1是窄带2FSK频谱利用率高但滤波分离难度大。课程设计一般做宽带取h在2到10之间都比较稳妥。频偏太小的话接收端两个带通滤波器很难把f1和f2分量分开误码率会明显变差。我常用的参数组合如下直接照着设就能把仿真跑起来参数符号取值说明码元速率Rb1000 bps每秒1000个二进制码元采样率fs80000 Hz满足fs2f2每个码元80个采样点载频0f110000 Hz对应比特0载频1f220000 Hz对应比特1频偏Δf10000 Hzf2−f1决定了两个频率的区分度调制指数h10Δf/Rb典型宽带2FSK这套参数下每个码元正好80个采样点每个载波周期也有4到8个采样点波形画出来比较光滑做频谱分析也不会出现混叠。注意采样率不要正好取2倍载频工程上一般留至少3到5倍裕量否则解调端相乘器输出会有明显失真。2.3 滤波器带宽与观察时长为什么不能随手填一个截止频率接收端滤波器是整个仿真里最容易“翻车”的地方。相干解调的结构是接收信号分别乘以cos(2πf1t)和cos(2πf2t)相乘之后产生两部分差频分量落在零频附近和频分量落在两倍载频附近。低通滤波器的任务就是滤掉和频分量只保留基带判决所需的差频分量。这里的截止频率要按码元速率来定而不是按载频来定。矩形非归零码元的频谱主瓣宽度是2Rb也就是说基带信号的主要能量集中在−Rb到Rb之间。低通截止频率取0.7到1.5倍Rb比较合理取太大滤不干净和频分量取太小会切掉码元波形的主能量造成码间干扰。我用fir1(64, Rb/(fs/2))归一化截止频率是0.025实际截止1000Hz效果足够。仿真时长同样有讲究。只跑几十个码元看不出统计规律但一上来跑几十万比特又会很慢。我的习惯是先跑2000到5000个比特看波形和基本误码率确认链路通了之后再按第4章的方法做正式的蒙特卡洛统计。课程设计报告里至少要放出一段包含几十个码元的波形图以及一条覆盖0到12dB的误码率曲线这两样东西缺一不可。3. 用MATLAB写2FSK调制与相干解调最小可复现脚本与参数说明3.1 调制端相位累加代替开关切换波形立刻变干净下面这段代码是整套仿真最核心的部分。它实现了相位连续的2FSK调制并且按照Eb/N0来加噪声避免了很多教程里直接用awgn函数导致横轴对不齐的问题。% 2FSK 调制与相干解调主程序 % 参数区 Rb 1000; % 码元速率 1000 bps fs 80000; % 采样率 80 kHz f1 10000; % 比特0载频 f2 20000; % 比特1载频 N_bits 2000; % 仿真比特数 spb fs / Rb; % 每码元采样点数 80 EbN0_db 8; % 仿真点信噪比 rng(42); % 固定随机种子结果可复现 % 数据生成与相位连续调制 bits randi([0 1], 1, N_bits); freqs bits * (f2 - f1) f1; % 每个码元映射到对应频率 freq_samples repelem(freqs, spb); % 展开到每个采样点 t (0:length(freq_samples)-1) / fs; phase 2 * pi * cumsum(freq_samples) / fs; % 相位累加保证连续 tx cos(phase);这段代码的关键在最后两行。freq_samples把每个码元的频率值复制了80份得到和采样点一一对应的瞬时频率数组。cumsum是对频率做积分得到相位再经过cos输出波形。这样产生的2FSK信号在码元切换时刻相位不会突变频谱旁瓣比键控法低很多。如果偷懒用拼接的方式比如每个码元单独生成cos(2πf1·t_local)再拼起来波形在码元边界会出现明显毛刺误码率曲线也会整体抬高。我在课设答辩时被问过一次“为什么你的频谱这么干净”答案就是相位累加这也算是一个加分项。3.2 解调端两路相干支路、低通滤波与中点抽样判决调制完成后加噪声和解调的代码继续往下接% 加性高斯白噪声按 Eb/N0 换算噪声方差 Eb sum(tx.^2) / fs / N_bits; % 每比特能量 N0 Eb / (10^(EbN0_db/10)); noise sqrt(N0 * fs / 2) * randn(size(tx)); % 实带通白噪声 rx tx noise; % 相干解调两路分别乘以本地载波 r1 rx .* cos(2*pi*f1*t); r2 rx .* cos(2*pi*f2*t); % 低通滤波截止频率取 Rb去掉和频分量 b fir1(64, Rb/(fs/2)); % 归一化截止频率 1000/40000 0.025 y1 filtfilt(b, 1, r1); y2 filtfilt(b, 1, r2); % 在每个码元中点抽样并判决 sample_idx round((1:N_bits) * spb - spb/2); y1_s y1(sample_idx); y2_s y2(sample_idx); bits_hat double(y1_s y2_s); % y1y2 判0反之判1 % 误码率 ber mean(bits_hat ~ bits); fprintf(Eb/N0 %.1f dB, BER %.5f\n, EbN0_db, ber);噪声方差的换算是这段代码里最容易出错的地方。实数带通信号的双边噪声功率谱密度是N0/2在采样率fs下积分离散采样点的噪声方差就是N0·fs/2。如果用awgn函数直接加噪它的信噪比定义和Eb/N0之间还差一个与每码元采样点数有关的常数画出来的误码率曲线会整体平移看起来和理论对不上。自己算噪声方差虽然多两行代码但曲线能和理论值严格对齐。滤波用了filtfilt而不是filter这是个很重要的细节。filtfilt做零相位滤波输出波形相对输入没有群延迟抽样点位置不需要额外补偿。如果用filter64阶FIR滤波器会带来32个采样点的延迟判决时刻全部错位误码率会高得离谱。很多教程不解释这个区别抄了代码跑出来结果不对大概率就是栽在这里。3.3 运行结果判读波形、打印值和抽样点分布看什么跑完上面这段代码先看命令窗口打印的BER。EbN08dB时相干2FSK的理论误码率大约是0.0023仿真结果在0.002到0.004之间都算正常偏差主要来自2000个比特的统计起伏。波形图同样值得仔细观察。前三个码元应该能明显看到频率从10kHz跳到20kHz再跳回来接收端波形在噪声背景下仍然能看出包络变化。如果画出来的波形幅度忽大忽小或者码元边界有尖刺第一嫌疑是相位处理方式不对第二嫌疑是采样率设置过低。我还习惯把抽样点的位置画出来核对一下直接在figure上叠加plot(sample_idx/fs, y1(sample_idx), ro)。抽样点应该落在每个码元的中点附近也就是波形最平缓、信噪比最高的位置。如果抽样点明显偏向码元边界说明帧同步或滤波延迟处理有问题。4. 误码率统计与理论曲线对比蒙特卡洛要跑多少比特才可信4.1 蒙特卡洛统计的置信条件至少积累100个错误比特课程设计报告里最常见的硬伤是用一两千个比特跑完就画误码率曲线结果高信噪比区域全是0曲线断崖式下跌。比如EbN012dB时理论误码率约5×10⁻⁵意味着平均2万个比特才出现1个错误2000个比特当然数不出来。做蒙特卡洛统计时我给自己定了一条规矩每个信噪比点至少积累100个错误比特。这个数字不是玄学误码率估计的置信度和错误计数直接相关积累100个错误时相对误差大约在±20%以内画出来的曲线落在理论值附近不会出现指数级波动。实际操作上不需要预先猜每个点该跑多少比特可以用一个自适应循环。先把误码率函数封装成一个独立函数返回误码率和实际错误数然后循环累加直到错误数达标function [ber, err_count] fsk_ber_sim(EbN0_db, N_bits, Rb, fs, f1, f2) % 2FSK 相干解调误码率仿真函数 % 输入EbN0_db 信噪比N_bits 本帧比特数Rb/fs/f1/f2 系统参数 % 输出ber 本帧误码率err_count 本帧错误比特数 spb fs / Rb; bits randi([0 1], 1, N_bits); freq_samples repelem(bits*(f2-f1)f1, spb); t (0:length(freq_samples)-1) / fs; phase 2 * pi * cumsum(freq_samples) / fs; tx cos(phase); Eb sum(tx.^2) / fs / N_bits; N0 Eb / (10^(EbN0_db/10)); rx tx sqrt(N0*fs/2) * randn(size(tx)); r1 rx .* cos(2*pi*f1*t); r2 rx .* cos(2*pi*f2*t); b fir1(64, Rb/(fs/2)); y1 filtfilt(b, 1, r1); y2 filtfilt(b, 1, r2); idx round((1:N_bits)*spb - spb/2); bits_hat double(y1(idx) y2(idx)); err sum(bits_hat ~ bits); ber err / N_bits; err_count err; end函数返回值里的err_count就是给自适应统计用的。每一帧跑完后检查累计错误数不够就继续跑下一帧避免了硬编码超长仿真浪费算力。4.2 主循环与两条理论曲线相干和非相干差在哪里有了上面的函数主循环写起来就很干净% 主循环统计每个 Eb/N0 点的误码率 EbN0_dB 0:2:12; ber_sim zeros(size(EbN0_dB)); target_err 100; % 目标错误数 for k 1:numel(EbN0_dB) total_err 0; total_bits 0; while total_err target_err [ber, err_count] fsk_ber_sim(EbN0_dB(k), 20000, 1000, 80000, 10000, 20000); total_err total_err err_count; total_bits total_bits 20000; end ber_sim(k) total_err / total_bits; end % 理论曲线 EbN0_lin 10.^(EbN0_dB/10); ber_coh qfunc(sqrt(EbN0_lin)); % 相干 2FSK ber_noncoh 0.5 * exp(-EbN0_lin/2); % 非相干 2FSK figure; semilogy(EbN0_dB, ber_sim, o); hold on; semilogy(EbN0_dB, ber_coh, -); semilogy(EbN0_dB, ber_noncoh, --); xlabel(Eb/N0 (dB)); ylabel(BER); legend(仿真相干解调, 理论相干2FSK, 理论非相干2FSK); grid on;两条理论曲线的公式值得记住。相干2FSK的误码率是Q(√(Eb/N0))非相干2FSK是0.5·exp(−Eb/(2N0))。两者在相同误码率下大约差1到2dB也就是说非相干解调性能略差但接收机不用恢复本地载波硬件简单很多。课程设计报告里如果只做相干解调把非相干理论曲线也画上去作参照能体现你对两种体制的理解。4.3 仿真偏差点排查固定偏移、随机波动和滤波损伤怎么区分做完仿真会发现仿真点和理论曲线不完全重合。这个偏差首先是统计起伏误码率本身就是随机量100个错误时相对误差约±20%画在半对数坐标上有半格左右的偏离非常正常。其次是滤波损伤低通滤波器会把码元波形拉宽造成轻微的码间干扰让实测误码率略高于理论值尤其是截止频率偏低的时候。最需要警惕的是系统性偏移如果仿真曲线整体向左或向右平移1到2dB说明Eb/N0换算有误。最常见的坑就是用awgn函数加噪声它的SNR定义和Eb/N0之间的换算关系和每码元采样点数有关直接代入必然产生固定偏移。另一个坑是发送端没有算准每比特能量比如把tx.^2求和在时域上除以了N_bits但忘记除以fs导致Eb差一个采样率量级的常数。遇到这种情况先单独打印Eb和N0的值做量纲检查再对照曲线偏移方向调整通常很快能定位。5. 2FSK仿真常见问题与避坑波形“发散”、抽样错位与相位跳变5.1 波形包络忽大忽小甚至出现“仿真发散”的观感现象调制输出波形不是等幅正弦波包络有明显起伏个别位置出现尖峰看起来像是数值计算发散。原因多半不是你系统的数值发散而是载波频率与采样率不匹配或者码元切换时刻相位不连续。我见过有人把采样率设成20000Hz、载频也是20000Hz波形完全混叠也见过用开关键控法在f1和f2之间硬切换切换点上波形相位突变产生尖峰。解决把采样率提高到最高载频的4倍以上并改用相位累加的方式生成载波相位连续后尖峰会自然消失。如果用了repelem扩展频率序列还要确认扩展倍数和spb一致否则每个码元内的采样点数不一致包络也会乱。5.2 解调输出波形“对不齐”误码率接近50%现象时域上解调波形和原始码元序列看起来错位了半个码元误码率几乎等于瞎猜。原因滤波器群延迟没有补偿。用filter做低通滤波时64阶FIR滤波器会让输出信号延迟32个采样点抽样判决时刻还按原位置取点等于每次都在码元边缘附近抽样此时码元电平正在跳变判决自然错乱。解决把filter换成filtfilt一次调用就同时解决延迟和相位失真问题。如果你用的滤波器阶数比较特殊也可以用delay(length(b)-1)/2手动补偿抽样位置但filtfilt是更省事的方案。需要强调的是filtfilt要求信号长度至少是滤波器阶数的3倍码元数太少时会报错这时候减少滤波器阶数或者增加仿真比特数。5.3 频谱旁瓣特别宽和理论图对不上现象用pwelch画出2FSK频谱明显看到两个主峰旁边延伸出很宽的高旁瓣带宽远大于理论值。原因相位不连续。键控法切换两个独立振荡器时每个码元都带着各自的初相相当于在频域引入了额外的冲击响应频谱被展宽。解决回到相位累加的实现方式。有人在论坛上问为什么自己的2FSK频谱比别人宽答案几乎都是这个。如果你有特殊原因必须展示键控法也可以在报告中说明这种频谱扩展对带外辐射的影响并把它作为对比项。5.4 低信噪比时仿真误码率低于理论值现象Eb/N0为0到4dB时仿真点比理论曲线低不少看上去“性能更好”。原因不是算法优越而是判决有偏。最常见的是filtfilt在信号边缘产生的瞬态效应以及抽样点没有严格落在码元中点相当于每次判决都沾了相邻码元的“光”。还有一种情况是发送端和接收端用了同一段随机种子导致噪声序列在两次仿真里相关但这在独立蒙特卡洛里比较少见。解决丢掉每个仿真帧开头和结尾各100个采样点只统计中间稳定区域抽样索引严格按照spb/2偏移计算并取整每帧仿真重新设置随机数生成器避免跨帧复用同一条噪声序列。5.5 Simulink里固定步长和载波频率的匹配问题现象同样的参数在MATLAB脚本里跑得好好的搬到Simulink模型里误码率却很高波形出现台阶状失真。原因Simulink连续仿真求解器默认是变步长的会在信号变化陡峭的地方自动加密步长但载波是高频正弦波变步长求解可能在每个周期只采一两个点波形重建质量很差。解决在求解器设置里把步长固定为1/fs或者更保险地设为1/(fs×4)确保每个载波周期至少有十几个仿真步进。另外把f1和f2设成采样率的整数分之一例如fs80kHz、f220kHz时每周期正好4个采样点配合固定步长就不会出现步进错位。这个坑在答辩演示时最容易暴露波形一放大就全是锯齿。6. 把脚本换成Simulink模型两种建模路径与结果互验技巧如果课设要求交Simulink仿真模型不用怕脚本里的核心思想可以原样搬过去。第一种路径是用通信工具箱现成模块发送端用M-FSK Modulator Baseband信道用AWGN Channel接收端用M-FSK Demodulator Baseband再接Error Rate Calculation统计误码率。这种搭法最快但模块封装太深答辩被问到内部原理时容易说不上来。我一般推荐第二种路径手搭模型。发送端用Bernoulli Binary Generator产生数据接Repeating Sequence Staircase把0/1映射成f1/f2再用Integrator和Trigonometric Function完成相位累加最后输出cos波形。接收端把收到的信号分两路分别乘本地载波用Analog Filter Design搭低通滤波器Zero-Order Hold在码元中点抽样Relational Operator比较两路大小输出判决结果。这套模型和你脚本里的每一行代码都能对应上讲起来底气完全不同。验证技巧上我习惯在模型里加一个To Workspace模块把解调输出和原始比特同时导到工作区再用MATLAB脚本计算误码率并与第4章的曲线对比。偏差不超过一个数量级就算通过说明模型搭建没有原理性错误。我自己的教训是当年先搭Simulink后写脚本步长问题导致波形虚胖误码率怎么都降不下来后来改成先脚本后模型两个结果互相对照排错效率高很多。做完这个题目你会形成一套固定习惯参数先写下来脚本先跑通波形和误码率曲线双确认再上Simulink做演示验证。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

深入 vllm-metal 内核:Metal 着色器加速 Paged Attention 与 GQA 的完整指南

深入 vllm-metal 内核:Metal 着色器加速 Paged Attention 与 GQA 的完整指南

【免费下载链接】vllm-metal Community maintained hardware plugin for vLLM on Apple Silicon 项目地址: https://gitcode.com/gh_mirrors/vl/vllm-metal 点击查看 免费下载 vllm-metal 是让 vLLM 在 Apple Silicon 上跑起来的社区硬件插件,它用 Meta…

2026/10/11 14:22:28 阅读更多 →
KMC动力学蒙特卡洛:表面反应事件驱动建模实战

KMC动力学蒙特卡洛:表面反应事件驱动建模实战

简介:本资源是一份面向计算材料学、物理化学及原子模拟方向研究生与科研人员的KMC方法原理精讲文档,系统解决分子动力学(MD)难以覆盖秒级及以上时间尺度动态演化问题。文档深入剖析动力学蒙特卡洛(Kinetic Monte Carlo…

2026/10/11 14:22:28 阅读更多 →
G1与ZGC调优实战:核心参数拆解与真实案例复盘

G1与ZGC调优实战:核心参数拆解与真实案例复盘

做Java后端的人,迟早会被GC问题找上门。我见过太多团队一遇到线上卡顿就搜“JVM调优参数”,然后照着网上那份流传多年的命令抄一遍,把 -XX:MaxGCPauseMillis 调到50、把 -Xmx 调大,结果重启之后停顿反而更频繁。并不是参数错了…

2026/10/11 14:21:28 阅读更多 →

最新新闻

Tesseract OCR中文识别实战:安装、调优与避坑指南

Tesseract OCR中文识别实战:安装、调优与避坑指南

简介:Tesseract OCR 安装包与中文语言包面向需要在本地完成图片文字识别的开发者、测试人员及自动化办公用户,尤其适合用 Python 调用 OCR 引擎处理中文文档、票据或截图的人群。压缩包共 723 个文件,约 36.01MB,以 C 源码&#x…

2026/10/12 17:54:23 阅读更多 →
深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算:用 TaoToken 统一 Key 看清 JSONL 会话与用量账本

深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算:用 TaoToken 统一 Key 看清 JSONL 会话与用量账本

/* 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 17:54:23 阅读更多 →
ResNet特征提取+SVM分类:乳腺癌病理图像检测实战

ResNet特征提取+SVM分类:乳腺癌病理图像检测实战

简介:这份资源面向医学影像分析与深度学习入门者,提供一套将ResNet深度残差网络与SVM支持向量机结合的乳腺癌检测完整方案,可用于辅助诊断、课程设计或算法复现练习。压缩包共25个文件,约7.1MB,包含Python脚本、模型权…

2026/10/12 17:54:23 阅读更多 →
2026年七款AI编程工具横评:TaoToken统一Key接入Cursor与Windsurf实测

2026年七款AI编程工具横评:TaoToken统一Key接入Cursor与Windsurf实测

/* 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 17:54:22 阅读更多 →
Unity 鼠标图标更换实战:用 TaoToken 统一管理 Cursor 资源与 Script 配置

Unity 鼠标图标更换实战:用 TaoToken 统一管理 Cursor 资源与 Script 配置

/* 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 17:54:22 阅读更多 →
DeepSeek AI接入企业微信:从API到聊天机器人的完整实现指南

DeepSeek AI接入企业微信:从API到聊天机器人的完整实现指南

简介:这是一套将DeepSeek大模型接入微信聊天的完整工程实现,适合具备基础Python技能、希望为个人微信账号提供智能对话能力的开发者。项目从模型加载、消息收发到前端交互均有配套代码,支持文本对话、Web界面操作,并附带文档上传与…

2026/10/12 17:53:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:54 阅读更多 →