信号与系统考研真题:奇偶分解绘图全解析与避坑指南 这次我们来看一道 2025 年成都信息工程大学信号与系统考研真题编号对应小马哥 960 题第 2 章第 2 题2.2考点是信号的奇偶分解绘图。奇偶分解本身是信号与系统里比较靠前的基础操作公式简单但放到考研卷子里出题人最喜欢在波形翻转方向、区间扩展和间断点取值上设置丢分点。本文不绕弯子直接把这套题的完整解法拆开先讲原理再讲手绘步骤然后用典型例题走一遍全过程最后给出 Python/MATLAB 验证方法和考场避坑清单。如果你正在刷 960 题、复习信号与系统专业课或者需要把这部分内容给考研学生讲清楚这篇文章可以直接收藏。先说结论这类题不涉及复杂计算核心是画图。只要掌握了 f(t) 到 f(-t) 的翻转映射、偶分量和奇分量的求和取半操作、以及间断点处数值的处理方式无论题目给的是矩形脉冲、三角波还是分段直线都能在 10 到 15 分钟内完成。下面从考点、原理、步骤、例题、验证、排错六个维度完整展开。1. 核心考点速览项目说明题目来源2025 年成都信息工程大学信号与系统考研真题小马哥 960 题 2.2所属章节信号与系统基础概念连续时间信号运算核心考点信号奇偶分解、波形翻转 f(-t)、偶分量 fe(t) 与奇分量 fo(t) 绘图题目难度中等偏易但绘图步骤多、细节多容易丢分考试形式给出 f(t) 波形要求画出 fe(t) 和 fo(t)关键公式fe(t)[f(t)f(-t)]/2fo(t)[f(t)-f(-t)]/2推荐用时熟练后 10 至 15 分钟易错点翻转方向画反、分解后定义域扩展遗漏、间断点取值错误、奇分量对称性检查缺失依赖工具纸笔或坐标纸可配合 Python/MATLAB 验证这套题看起来只是“画两条曲线”实际上考察的是对信号基本运算的理解是否扎实。很多同学能写出公式但一画图就暴露问题f(-t) 翻转区间映射错、分段函数在边界点的值标错、分解出来的 fe 和 fo 对不对称也不检查。所以备考时不要只看公式必须把每一步操作落到图上。2. 适用场景与复习边界这道题适合以下人群准备考成都信息工程大学信号与系统专业课的同学正在刷小马哥 960 题、需要对奇偶分解做专项训练的同学已经学完信号与系统第一章、但对波形翻转和分解画图不熟悉的同学。同时也适合需要给考研学生做答疑、讲题的人作为教学素材。从题目训练价值看奇偶分解绘图的价值不在“会套公式”而在三件事第一训练信号波形在时间轴上的翻转能力这是后续做卷积积分视觉化判断的基础第二训练分段函数在对称变换后的区间映射能力这直接关系到傅里叶变换、拉普拉斯变换中的定义域计算第三训练对信号对称性的直觉后续判断系统性质、频谱实虚部时经常用到。不建议在不具备前置知识的情况下硬刷这类题。如果连 u(t)、sgn(t)、矩形脉冲的基本波形都画不熟如果还分不清 f(t-1) 和 f(1-t) 的区别建议先补齐信号翻转和时移内容再回来做奇偶分解。否则做题时会卡在第一步无法真正暴露“分解”环节的问题。另外这道题属于基础计算绘图题不适合用来拔高真正想冲高分应该把精力再放到卷积、傅里叶变换等重难点上。从法律和合规角度本题不涉及人脸、声音、版权素材或隐私数据。考生使用教材、真题、题库复习时注意选用正版资料即可。3. 知识准备与工具环境3.1 先修知识清单在做奇偶分解绘图前建议确认自己已经掌握以下内容f(t) 的基本画法包括常数、直线段、矩形脉冲、三角波、指数衰减、阶跃函数 u(t)、符号函数 sgn(t)f(-t) 的画法即原波形沿纵轴做镜像翻转分段函数的区间映射例如 f(t) 只在 t∈[a,b] 上有值翻转后 f(-t) 只在 t∈[-b,-a] 上有值连续信号在间断点处取值的基本约定考研绘图通常要求标出端点处是实心点还是空心点如果这些基础不牢建议先做 10 道关于 f(atb) 的波形变换题再回到奇偶分解。否则在画 f(-t) 时会反复出错后面 fe、fo 就更不用提。3.2 工具环境这道题本身只需要纸笔。但如果你希望用计算机验证答案建议准备以下环境工具用途安装方式Python 3.8数值计算与绘图官网安装或 Anacondanumpy数组运算、构造分段信号pip install numpymatplotlib绘制 f(t)、f(-t)、fe(t)、fo(t)pip install matplotlibMATLAB 或 Octave替代 Python 的验证方案按各自平台安装题目需要掌握的是分析方法工具只是辅助。手绘步骤必须自己走一遍计算机验证用来检查最终结果是否对称、是否满足重构关系两者结合效率最高。4. 奇偶分解原理与公式4.1 分解公式推导任意连续时间信号 f(t) 都可以唯一地分解为一个偶分量和一个奇分量之和。定义fe(t) [f(t) f(-t)] / 2fo(t) [f(t) - f(-t)] / 2验证偶分量性质fe(-t) [f(-t) f(t)] / 2 fe(t)验证奇分量性质fo(-t) [f(-t) - f(t)] / 2 -[f(t) - f(-t)] / 2 -fo(t)所以 fe(t) 关于纵轴对称fo(t) 关于原点中心对称且两者相加正好等于原信号fe(t) fo(t) [f(t) f(-t)] / 2 [f(t) - f(-t)] / 2 f(t)这个唯一性很重要。它意味着如果画出 fe 和 fo 后两边相加还能还原成原来的 f(t)那么你的分解就是对的否则中间一定有步骤出错。4.2 对 t0 处的特殊处理把 t0 代入上面两个公式fe(0) [f(0) f(0)] / 2 f(0)fo(0) [f(0) - f(0)] / 2 0也就是说无论原信号在 t0 处是什么值偶分量在原点必然等于原信号取值而奇分量在原点必然为 0。这是一个非常实用的检查点。另外需要注意的是偶分量完全继承原信号的直流分量因为直流信号本身是偶函数奇分量的正半轴面积与负半轴面积必然相互抵消奇分量的总积分为 0。这个性质也可以用来检查画图是否正确。4.3 常见信号的奇偶分解单位阶跃信号 u(t) 是典型的非奇非偶信号。若忽略 t0 单点取值分解结果为fe(t) 1/2t ≠ 0fo(t) (1/2)sgn(t)也就是说阶跃信号分解后得到一个常数直流 1/2以及一个符号函数的一半。矩形脉冲的奇偶分解要看矩形是否关于纵轴对称。如果矩形脉冲本身关于 t0 对称那么它已经是偶函数奇分量为 0偶分量就是它自己。如果矩形脉冲出现在非对称位置比如只在 t∈[0,1] 上有值分解后定义域会扩展到 [-1,1]并且偶分量是一个平台奇分量是正负相反的阶梯。这一点在后面的典型例题中会详细演示。5. 手绘奇偶分解的标准步骤5.1 先画 f(t)标清所有分段区间和关键点拿到题目给出的波形第一步不是急着画 f(-t)而是先把 f(t) 的分段表达式或者分段区间写清楚。比如信号在 [-2,-1]、[-1,0]、[0,2] 上分别是直线还是常量端点值是多少哪些点是空心哪些点是实心。这一步是后面所有操作的基础。建议在草稿纸上用坐标轴标出几个关键横坐标比如 -2、-1、0、1、2并在这些位置标注对应的 f(t) 值。遇到间断点用括号在旁边写清楚左极限、右极限和函数值。5.2 画 f(-t)沿纵轴翻转画 f(-t) 的本质是把波形沿纵轴镜像翻转。这里最容易犯的错误是把翻转理解成“左右平移”或者“波形大小改变”。一个实用的技巧把原波形想成画在一张透明纸上然后沿纵轴把纸翻过去得到的形状就是 f(-t)。但分段区间必须重新映射原 f(t) 在 t∈[a,b] 上有定义翻转后 f(-t) 在 t∈[-b,-a] 上有定义。也就是说左端点和右端点会互换位置。原来最右边的点会翻到最左边原来最左边的点会翻到最右边。如果某一段的 f(t) 表达式为 g(t)那么 f(-t) 对应区间上的表达式是把 -t 代入 g也就是 g(-t)。这一步需要小心处理一次项系数和常数项。5.3 求偶分量 fe上下对应点取平均把 f(t) 和 f(-t) 画在同一张坐标纸上对于每一个横坐标 t找到该位置处两条曲线的纵坐标值然后取平均值fe(t) [f(t) f(-t)] / 2几何上可以理解为两条曲线在同一横坐标位置的中线。如果 f(t) 和 f(-t) 在某个区间上都是直线那么平均后结果仍然是直线只需要取两个端点计算后连线。5.4 求奇分量 fo上下对应点取半差用同样的方法计算fo(t) [f(t) - f(-t)] / 2几何上这是两条曲线在同一横坐标位置处差值的一半。注意这里是有方向的f(t) 在上方时 fo 为正f(-t) 在上方时 fo 为负。5.5 检查对称性和重构关系画完 fe 和 fo 后必须做两个检查第一看 fe 是否关于纵轴对称看 fo 是否关于原点中心对称。如果 fe 左右不对称或者 fo 上下不对称说明前面的翻转或计算有误。第二检查 fe(t) fo(t) 是否等于 f(t)。可以不用逐点验证但在关键点比如 0、1、2、-2 处核对一下数值是否吻合。6. 典型例题演示斜坡信号分解全过程由于考研真题原图在传播版本中可能存在差异这里用一个自设的典型信号演示完整过程。拿到真题后只需要把题目给定的波形替换到下面的步骤中方法完全一致。设信号f(t) 1 - tt∈[0,2]其它位置为 0。这个信号从 f(0)1 线性下降到 f(2)-1只定义在正半轴非对称是一个非常适合演示奇偶分解的信号。6.1 写出 f(t) 和 f(-t) 的表达式f(t) 的支撑区间是 [0,2]。翻转后f(-t) 的支撑区间变成 [-2,0]。在原区间 [0,2] 上f(t)1-t。令 s-t则 f(-t)1-(-t)1t所以f(-t) 1 tt∈[-2,0]其它位置为 0。注意两个信号在 t0 处都等于 1。6.2 分区间计算偶分量 fe(t)在 t∈[-2,0) 区间f(t)0f(-t)1t所以fe(t) [0 (1t)] / 2 (1t)/2在 t0 处fe(0) [f(0)f(0)] / 2 [11] / 2 1在 t∈(0,2] 区间f(t)1-tf(-t)0所以fe(t) [(1-t) 0] / 2 (1-t)/2可以看到fe 在 [-2,0) 上是右斜向上的直线从 -0.5 上升到 0.5在 (0,2] 上是右斜向下的直线从 0.5 下降到 -0.5在 t0 处有一个孤立的单点 1。绘制时两侧线段在 0 附近用空心点原点处单独标实心点 1。6.3 分区间计算奇分量 fo(t)在 t∈[-2,0) 区间fo(t) [0 - (1t)] / 2 -(1t)/2在 t0 处fo(0) 0在 t∈(0,2] 区间fo(t) [(1-t) - 0] / 2 (1-t)/2fo 在负半轴从 t-2 处的 0.5 线性下降到 t0 极限位置的 -0.5经过 t-1 时值为 0在正半轴从 t0 极限位置的 0.5 线性下降到 t2 处的 -0.5经过 t1 时值为 0。整体关于原点中心对称满足奇函数性质。6.4 画图要点实际绘图时建议把四个图排成 2×2 布局左上画 f(t)右上画 f(-t)左下画 fe(t)右下画 fo(t)。每个图都画上坐标轴刻度标出 -2、-1、0、1、2 这些关键横坐标以及对应的纵坐标数值。特别注意 fe 在 t0 处的孤立点。如果不标注这个点只看曲线形状会以为 fe 就是两端线性下降的简单折线但实际上在原点处有一个尖峰 1。这类单点跳变是考研阅卷时容易扣分的细节。7. 用 Python/MATLAB 验证分解结果手绘完成后建议用计算机快速验证一遍。下面给出完整可运行的 Python 脚本。7.1 安装依赖pip install numpy matplotlib7.2 Python 完整验证脚本import numpy as np import matplotlib.pyplot as plt t np.linspace(-4, 4, 2000) def f(t): return np.where((t 0) (t 2), 1 - t, 0.0) ft f(t) f_neg f(-t) fe 0.5 * (ft f_neg) fo 0.5 * (ft - f_neg) plt.figure(figsize(12, 8)) plt.subplot(2, 2, 1) plt.plot(t, ft, linewidth2) plt.title(f(t)) plt.grid(True) plt.subplot(2, 2, 2) plt.plot(t, f_neg, linewidth2) plt.title(f(-t)) plt.grid(True) plt.subplot(2, 2, 3) plt.plot(t, fe, linewidth2) plt.title(fe(t)) plt.grid(True) plt.subplot(2, 2, 4) plt.plot(t, fo, linewidth2) plt.title(fo(t)) plt.grid(True) plt.tight_layout() plt.savefig(odd_even_decompose.png, dpi150) plt.show()运行后会得到四个波形图。与原题对照时重点看 fe 是否左右对称、fo 是否关于原点对称以及 fefo 是否还原成 f(t)。7.3 对称性自检代码上面脚本中t 关于 0 对称所以可以通过数组倒序来检查对称性err_even np.max(np.abs(fe - fe[::-1])) err_odd np.max(np.abs(fo fo[::-1])) err_sum np.max(np.abs((fe fo) - ft)) print(fe 偶对称误差:, err_even) print(fo 奇对称误差:, err_odd) print(fefo 重构误差:, err_sum)在数值计算中由于采样点有限这些误差应该是 10 的负 16 次方量级也就是接近 0。如果误差很大说明信号构造或分解过程有错误。7.4 MATLAB/Octave 参考代码t linspace(-4, 4, 2000); f (t) (t 0 t 2) .* (1 - t); ft f(t); f_neg f(-t); fe (ft f_neg) / 2; fo (ft - f_neg) / 2; subplot(2,2,1); plot(t, ft); title(f(t)); grid on; subplot(2,2,2); plot(t, f_neg); title(f(-t)); grid on; subplot(2,2,3); plot(t, fe); title(fe(t)); grid on; subplot(2,2,4); plot(t, fo); title(fo(t)); grid on;MATLAB 的匿名函数写法比较简洁和 Python 的判断条件思路一致。这里需要说明以上脚本只是验证方法演示实际考试时仍然要手绘图不能带脚本进考场。8. 批量检查与自动化批改思路奇偶分解题虽然大多手工完成但如果是在教学场景中给多个学生出题、批改或者自己想批量练习多道波形变换题可以写一个小的自动检查脚本。核心思路是把不同的分段信号装配成一个函数列表循环计算每个信号的 fe、fo并自动输出对称性误差和重构误差。import numpy as np def decompose_auto(t, f): ft f(t) f_neg f(-t) fe 0.5 * (ft f_neg) fo 0.5 * (ft - f_neg) err_fe np.max(np.abs(fe - fe[::-1])) err_fo np.max(np.abs(fo fo[::-1])) err_sum np.max(np.abs(ft - (fe fo))) return err_fe, err_fo, err_sum t np.linspace(-4, 4, 4001) def f1(t): return np.where((t 0) (t 2), 1 - t, 0.0) def f2(t): return np.where((t -1) (t 1), 1.0, 0.0) for i, f in enumerate([f1, f2], 1): e1, e2, e3 decompose_auto(t, f) print(f信号{i}: 偶对称误差{e1:.3e}, 奇对称误差{e2:.3e}, 重构误差{e3:.3e})信号1是上文演示的斜坡信号信号2是一个关于纵轴对称的矩形脉冲它的奇分量在理论上应为 0。运行脚本后可以看到信号2的奇对称误差接近 0说明分解正确。这个脚本稍作扩展就能用来批量检查题库中大量信号的分解结果。9. 考研答题规范与常见错误排查9.1 答题过程建议考场作答奇偶分解题时建议在试卷答题区域按以下顺序书写第一写出两条基本公式 fe(t)[f(t)f(-t)]/2 和 fo(t)[f(t)-f(-t)]/2让阅卷老师明确你的解题依据。第二画出 f(-t) 的波形最好用虚线画在 f(t) 的旁边并标注区间。这一步即使不单独算分也是后续正确分解的必要过程。第三分别画出 fe(t) 和 fo(t)。两个图建议上下排列或左右排列横纵坐标轴、刻度、关键点数值必须清楚。第四在关键点处标注函数值比如 t0、t1、t2、t-2 等位置。遇到间断点用实心点和空心点区分“该点有值”和“该点极限趋向但无值”。第五如果有时间在图的空白处简单验算 fe(0)fo(0)f(0)用于检查 t0 处的取值。9.2 常见错误排查表问题现象可能原因排查方式解决方案f(-t) 画成右移把翻转误当成时移检查原波形支撑区间是否镜像沿纵轴翻转