方波信号的傅里叶分解与合成:MATLAB实验与吉布斯现象解析
简介信号与系统课程中关于信号分解与合成实验的完整报告文档适合电子信息类本科在读学生、备考或开展信号处理实验的初学者使用。内容依托实验五任务涵盖方波与三角波信号的分解、各次谐波提取与再合成并给出示波器观测结果、傅里叶级数系数比例验证及原理总结可帮助读者快速理解有源带通滤波器选频、谐波幅度相位匹配等核心环节。压缩包为单份docx文档共1个文件大小589KB排版结构与实验流程直接对应便于查看和打印。该资源已被447人浏览学习说明其对同类实验有现实参考价值。读者拿到后可直接对照其中的实验记录、波形说明和结论要点形成自己的实验报告同时借助方波、三角波频谱差异的分析提升对信号分解与合成基本原理的掌握。1. 信号分解与合成实验一条亲手走通的时域到频域回路把方波拆开再装回去中间隔着的就是傅里叶级数。这个实验的核心动作只有两个先按频率把信号拆成不同振幅和相位的正弦分量再把有限项分量重新叠回时域波形。看起来像是在验证数学公式但它真正想让你理解的是工程里每天都在用的那件事——任何实际系统都是带限的你拿到的永远不是原信号而是它在有限带宽下的重构结果。读这一章的读者无论你是正在做实验报告、备考信号与系统还是想补傅里叶分析的直觉都值得把这条“时域→频域→时域”的回路亲手走通它比背十遍变换对都有用。2. 从傅里叶级数到吉布斯现象分解与合成的理论边界做实验之前先回答一个问题为什么一个周期矩形波可以被拆成一组正弦信号的加权和而且是唯一的一组如果拆法不唯一合成结果就谈不上“还原”。这一章把傅里叶级数的适用条件、方波的系数特征和吉布斯现象摆清楚后面写代码时才不会只看波形不问依据。2.1 周期信号为什么能拆成三角级数傅里叶级数的底气来自正交性。在区间 $(t_0, t_0T)$ 上三角函数系 ${1, \cos(n\omega_0 t), \sin(n\omega_0 t)}$$n1,2,\dots$满足两两正交任意两个不同函数的乘积在一个周期内积分为零只有自身与自身相乘时积分不为零。这意味着每个正弦分量在“信号空间”里都占据独立的坐标轴把周期信号往这些坐标轴上投影得到的就是各次谐波的幅度系数。对实周期信号 $x(t)$傅里叶级数写成$$x(t) a_0 \sum_{n1}^{\infty}\left[a_n\cos(n\omega_0 t) b_n\sin(n\omega_0 t)\right]$$其中 $\omega_0 2\pi/T$系数为$$a_n \frac{2}{T}\int_{t_0}^{t_0T} x(t)\cos(n\omega_0 t),dt, \qquad b_n \frac{2}{T}\int_{t_0}^{t_0T} x(t)\sin(n\omega_0 t),dt$$$a_0$ 对应直流分量。正交性保证系数唯一合成时分量之间不会互相污染。实验里常出现的错误是只把几个谐波幅度加起来忘了每项前面的 $\frac{4}{\pi}$ 这类归一化系数结果合成波形的幅度明显偏小根源就是没从系数公式出发而是靠猜。对于幅度为 $\pm 1$ 的周期方波套用 $b_n$ 公式可得 $b_n \frac{2}{n\pi}(1 - \cos n\pi)$。当 $n$ 为奇数时 $b_n \frac{4}{n\pi}$偶数时为 0。所以方波频谱只有奇次谐波且幅度按 $1/n$ 衰减。这个衰减速度决定了重构方波难度不小虽然系数幅度不断变小但谐波数量多跳变沿需要大量高频分量才能“立”起来。2.2 收敛条件与方波的特殊地位并非所有周期信号都能安全地做傅里叶展开。狄利克雷条件给出三条限制信号在一个周期内只有有限个极值点、有限个第一类间断点且绝对可积。周期方波恰好满足这三个条件所以它成了分解实验的首选对象。三角波、锯齿波同样满足但方波的间断点最尖锐合成时的行为也最具代表性。收敛这件事要在两种点上分开看。在信号连续点上部分和随 $N \to \infty$ 收敛于 $x(t)$在间断点处级数收敛到跳变的中点也就是 $\frac{x(t_0^) x(t_0^-)}{2}$。用 MATLAB 画方波时跳变处经常出现一个竖线或过冲代码里如果不对 $t0$ 这类点做特殊处理画出来的图在跳变点附近形态会和手算结果对不上。2.3 吉布斯现象过冲不会随着 N 增大而消失有限项合成时跳变沿附近会出现固定幅度的振铃这就是吉布斯现象。关键结论是无论把截断阶数 $N$ 提高到多大过冲幅度都不会趋于零。方波跳变幅度为 2从 $-1$ 到 $1$过冲量约为跳变高度的 $8.95%$也就是峰峰值约 $0.179$。随着 $N$ 增大过冲区域不断向跳变点压缩波形看起来越来越“陡”但过冲的绝对高度基本不变。下表总结了几种常见周期信号的系数衰减与收敛表现写报告时可以用来对比论证。信号类型傅里叶系数衰减间断点合成时最明显的现象方波$1/n$有吉布斯过冲约 8.95%三角波$1/n^2$无收敛快少量阶次即贴合锯齿波$1/n$有跳变处同样出现过冲半波整流$1/n^2$有导数不连续直流分量必须保留系数的衰减速度决定了“截断误差”的主导形式。$1/n$ 的衰减意味着每提高一倍的谐波次数只减少一半的残余能量所以方波需要较多谐波才能让波形边缘看起来像样$1/n^2$ 的衰减则快得多三角波用前 510 次谐波就基本看不出差别了。3. MATLAB 最小实现方波逐次谐波分解与合成理论归理论落到实验报告上最核心的产出就是一张“不同谐波阶次叠加逼近方波”的图。下面这套代码在 MATLAB 里可以直接跑通生成合成对比图和能量收敛曲线覆盖实验五最常见的两个要求。建议不要直接复制了事逐行看清楚再改参数。3.1 完整代码一个文件跑出分解合成主图% 实验五周期方波的傅里叶分解与合成 % 参数定义 T 2*pi; % 方波周期基波角频率 w0 1 w0 2*pi/T; % 基频 fs 5000; % 每周期采样点数决定波形平滑度 t linspace(-2*T, 2*T, 4*fs1); % 时间轴显示 4 个周期 % 理想方波幅度 -1 square_wave sign(sin(w0*t)); % 需要观察的截断谐波阶次从 1 到 21 N_list [1 3 5 9 21]; legend_label {理想方波}; figure(Position, [100 100 900 500]); hold on; plot(t, square_wave, k, LineWidth, 1.5); % 黑色理想方波 for N N_list f_series zeros(size(t)); % 每次从零开始重新叠加 for n 1:2:N % 只取奇次谐波 f_series f_series (4/pi) * (1/n) * sin(n*w0*t); end plot(t, f_series, LineWidth, 1); legend_label{end1} sprintf(N%d, N); end legend(legend_label, FontSize, 9, Location, northeast); xlabel(时间 t); ylabel(幅度); title(方波信号的傅里叶合成奇次谐波逐次逼近); grid on; axis([-2*T 2*T -1.6 1.6]);这段代码把合成过程画成一组曲线N1只有基波是一条正弦N3开始出现方波轮廓到N21时波形边缘已经比较陡但跳变处仍能看出振铃。1:2:N这个步长写法只遍历奇数下标因为偶数次谐波的傅里叶系数本来为 0加进去也只会增加计算量。4/pi*(1/n)是对应 $n$ 次奇次谐波的幅度系数来自 $b_n 4/(n\pi)$。zeros(size(t))保证每组 $N$ 都从空信号开始累加避免上一次循环的残留污染结果。3.2 代码逻辑说明为什么循环步长是 2方波分解实验最容易写错的地方是把循环写成for n 1:N把偶次项也算进去。偶次谐波系数为 0结果虽然不变但计算时间翻倍且代码表达不准确。更隐蔽的错误是幅度系数漏写 $\pi$比如直接写(1/n)*sin(...)合成波形幅度会明显小于 1因为傅里叶系数的归一化被丢了。这里还涉及一个相位问题。上面代码用的是 $\sin(n\omega_0 t)$对应的是奇函数方波起点为 0形状关于原点对称。如果把 $\sin$ 全部换成 $\cos$合成出来的波形相位偏了 90 度结果完全是另一条曲线不再是方波。实验报告里一般要求画出“分解出的基波、三次谐波、五次谐波单独波形”再画“叠加后的合成波形”。单次谐波的画法是在循环体内单独成图或者把每次的f_series存成矩阵再拆分。3.3 用能量收敛曲线验证分解的完整性波形趋近只说明视觉上的相似报告里还需要一个量化指标。帕塞瓦尔定理给出周期信号的平均功率等于各谐波分量平均功率之和。对幅度为 $\pm 1$ 的方波总平均功率为 1前 $N$ 次谐波的累计功率占比可以直接计算。N_max 100; n_odd 1:2:N_max; a_n 4./(pi*n_odd); % 各奇次谐波幅度 pow_odd 0.5 * a_n.^2; % 单次谐波的平均功率 pow_total 1; % 幅度 -1 方波的平均功率 cum_pct cumsum(pow_odd) / pow_total * 100; figure; plot(n_odd, cum_pct, o-); xlabel(谐波阶次 n); ylabel(累计能量占比 (%)); title(有限项谐波合成的能量收敛); grid on;cumsum是 MATLAB 的累计和函数逐项把前 $N$ 项功率加起来。0.5*a_n.^2来自正弦信号平均功率公式幅度为 $A$ 的正弦平均功率是 $A^2/2$。运行后可以看到$N1$ 时能量只占约 81%$N9$ 时约 96%到 $N21$ 时约 98%。这个收敛速度说明少量谐波就能捕获大部分能量但剩下那 2% 的能量正好对应跳变沿的“陡峭程度”所以视觉上依然能看出振铃。4. 参数设置与易错点采样率、截断阶数、相位对齐MATLAB 仿真看似没有硬件约束但时间轴点数、截断阶数和相位选择会直接改变实验结果。实验报告里如果波形“不对劲”九成出在这三类参数上。这一章把每个参数的影响和推荐值列清楚照着排查能少走弯路。4.1 时间轴与采样点数先保证波形不发“毛边”linspace(-2*T, 2*T, 4*fs1)里fs是每周期采样点数整段信号共 4 个周期点数设为4*fs1是为了让首尾对应同一个相位。若fs太小比如 50合成后的高频谐波在图上会呈明显折线看起来像噪声叠加容易误判为算法错误。仿真时建议每周期至少 2000 点上面代码用 5000 点曲线足够平滑。还有个细节容易被忽略sign(sin(w0*t))在 $t0$、$t\pm\pi$ 等跳变点处sin的数值可能是一个很小的非零值而不是严格 0导致理想方波在跳变处出现一个窄脉冲。严格的方波在跳变点应该定义为中点值 0但绘图时单点差异几乎不可见。如果想严谨可以在生成square_wave后加一行square_wave(abs(square_wave)1) 0把跳变处强制归零。4.2 截断阶数 N 的选择不是越大越好N 太小波形圆角明显N 太大叠加循环变慢且吉布斯过冲依然存在。实验里常用取法是 $N1,3,5,9,21$用五条曲线展示渐进过程。工程上选 $N20\sim50$ 里任意一个奇数即可能量占比都在 98% 以上。下面这张表可以直接用于报告中的参数说明。谐波阶次 N累计能量占比合成波形特征181.1%正弦幅度约 1.27明显不是方波390.1%顶部变平跳变处出现第一个过冲593.3%上升沿变陡振铃范围收紧996.3%视觉上已接近方波顶部微有起伏2198.2%近似方波跳变沿仍有约 8.95% 过冲需要特别说明的是上表的能量占比是在幅度为 $\pm 1$ 的方波、且使用理论系数时得到的。如果代码里系数算错能量占比曲线也会偏离这些值。报告里写结论时应当以自己运行cum_pct得到的实际数值为准表格只能作为量级参考。4.3 相位对齐合成失真的隐藏原因傅里叶级数每一项都带有确定的初始相位。方波分解中所有奇次谐波相位一致都是 0合成时才能对齐跳变位置。如果误用cos函数代替sin每个谐波都被平移 90 度合成结果会变成完全不同的波形。这个错误在图形上非常明显原本关于原点对称的方波会变成类似偶对称的形状且跳变位置错位。排查方法很简单——单独画一次 $N1$ 的基波检查它是不是过原点上升的正弦如果是余弦形态说明相位基准已经错了。4.4 仿真与硬件实验箱的差异部分学校要求用 DSP 或实验箱做这组实验合成的效果和 MATLAB 仿真会有差异。硬件系统的采样率、DAC 位数、低通滤波器相频特性都会影响各次谐波的幅度和相位。特别是滤波器即使幅度响应平坦相频特性也会让不同频率的谐波产生不同延迟结果波形跳变沿两侧出现不对称振铃。遇到这种情况不要误以为是理论错了要检查信号链中每一级的相位延迟。报告里如果能写出“仿真理想条件下吉布斯过冲为 8.95%实物链路中因模拟滤波器相频失真过冲左右不对称”比单纯抄结论更有说服力。5. 报告收尾帕塞瓦尔验证、图表规范与结论写法实验报告的分数差距往往不在实验过程而在最后那几页的验证与结论。这一章给出可以直接用的验证代码和报告写作套路。5.1 用帕塞瓦尔定理量化合成误差写完合成主图和能量收敛曲线后再加一个误差验证计算前 $N$ 次谐波重构信号与理想方波的平均绝对误差MAE。N_test [1 3 5 9 21 51 101]; for N N_test f zeros(size(t)); for n 1:2:N f f (4/pi) * (1/n) * sin(n*w0*t); end mae mean(abs(f - square_wave)); fprintf(N%3d, MAE%.4f\n, N, mae); endMAE 会随 N 增大而下降但下降速度越来越慢。这组数字放进报告表格里和能量占比配合使用能量占比说明“高频分量虽小但不可忽略”MAE 说明“时域误差的收敛趋势”。两列数据都来源于同一个合成过程逻辑上是自洽的。5.2 图表规范与结论里必须有数据信号与系统实验报告最忌贴一张没坐标标签的图。我的建议是每个图至少做到四点横纵坐标标明物理量和单位时间 t、幅度多条曲线必须有图例不同 N 用不同颜色或线型区分吉布斯过冲处加一个局部放大子图直观显示过冲大小。结论部分不要只写“验证了傅里叶级数”。更合理的是写当 N21 时能量占比约 98%时域波形与理想方波的 MAE 约为某个值跳变沿处过冲约为 0.179约为跳变高度的 8.95%符合理论值继续增大 N 过冲不消失仅向跳变点压缩。这样写每个数字都指向你的实验数据既说明你理解了原理也说明你关注了实验细节这份报告的信息量就出来了。本文还有配套的精品资源点击获取

相关新闻

uni-app x 鸿蒙(HarmonyOS)原生工程集成一键登录(uni-verify)模块实战指南

uni-app x 鸿蒙(HarmonyOS)原生工程集成一键登录(uni-verify)模块实战指南

uni-app x 鸿蒙(HarmonyOS)原生工程集成一键登录(uni-verify)模块实战指南 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 本文以 uni-app 开源仓…

2026/9/21 13:13:30 阅读更多 →
Fastp做FASTQ质控:从参数拆解到Shell批量处理实战

Fastp做FASTQ质控:从参数拆解到Shell批量处理实战

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

2026/9/24 12:09:15 阅读更多 →
first-contributions 首次贡献实战:从 fork 到 pull request 的完整开源协作流程(README.mm_unicode 指南深度解读)

first-contributions 首次贡献实战:从 fork 到 pull request 的完整开源协作流程(README.mm_unicode 指南深度解读)

first-contributions 首次贡献实战:从 fork 到 pull request 的完整开源协作流程(README.mm_unicode 指南深度解读) 【免费下载链接】first-contributions 🚀✨ Help beginners to contribute to open source projects 项目地址…

2026/9/21 8:17:27 阅读更多 →

最新新闻

Linux下struct input_event结构体详解

Linux下struct input_event结构体详解

4.4 触控屏应用接口 4.4.1 输入子系统简介 连接操作系统的输入设备,可不止一种,也许是一个标准 PS/2 键盘,也许是一个 USB鼠标,或者是一块触摸屏,甚至是一个游戏机摇杆, Linux 在处理这些纷繁各异的输入设…

2026/9/24 12:10:07 阅读更多 →
AI服务器电源效率实测:标称97%为何只有94%?

AI服务器电源效率实测:标称97%为何只有94%?

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

2026/9/24 12:10:07 阅读更多 →
级联PLL下OCC时钟控制“饿死”问题:DFTC配置与排查实战

级联PLL下OCC时钟控制“饿死”问题:DFTC配置与排查实战

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

2026/9/24 12:10:07 阅读更多 →
EMC检测报告真伪核验:采购工程师的12步实战指南

EMC检测报告真伪核验:采购工程师的12步实战指南

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

2026/9/24 12:10:07 阅读更多 →
2026年Figma平替实测:免费设计工具选型与AI工作流落地指南

2026年Figma平替实测:免费设计工具选型与AI工作流落地指南

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

2026/9/24 12:10:07 阅读更多 →
生产环境变慢?perf与strace实战定位性能瓶颈

生产环境变慢?perf与strace实战定位性能瓶颈

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

2026/9/24 12:09:07 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →