信号与系统波形变换作图:尺度变换、时移与反转综合题解法

📅 发布时间:2026/9/1 6:34:11
信号与系统波形变换作图:尺度变换、时移与反转综合题解法 这次我们来看一个信号与系统里的高频基础题信号尺度变换、时移、反转综合变换作图。题目来自小马哥960题题库对应2024年成都信息工程大学信号与系统相关试卷第2.1题。这类题在考研和期末考试中基本属于必拿分项但每年都有不少同学在变换顺序、时移方向上出错画出来的波形和答案相差很远。信号变换作图的核心不是背很多种“套路组合”而是掌握三件事三个基本变换各自的图形效果、复合函数的拆分顺序、以及关键点坐标映射。本文先用一道典型三角波题完整演示两种解法再用 Python 数值绘图做交叉验证最后给出这类题最容易踩的坑和考场建议。如果你正在复习信号与系统或者准备考研专业课这篇文章可以直接收藏。1. 核心考点速览先把这道题涉及的知识点列成一张表方便后面展开。项目说明考点类型连续时间信号的横轴变换基本变换反转 f(-t)、尺度变换 f(at)、时移 f(t-t0)题目来源小马哥960题2024年成都信息工程大学相关试卷2.1题核心能力给定 f(t) 波形画出 f(atb) 波形易错点变换顺序、时移方向、系数提取高频要求能画波形图、能写分段函数表达式、能判断斜率变化这类题最大的特点是图形本身不难难在思路清晰。只要变换规则掌握牢固考场上可以直接用关键点法快速解决。2. 适用场景与使用边界这道题适合三类读者第一类是正在复习信号与系统期末考试的本科生。这类综合变换作图题经常出现在期末卷子的基础题部分一个题可能占 8 到 15 分。第二类是准备电子信息类考研专业课的同学。信号与系统考研题里这类题很少单独出现但会作为后续傅里叶变换、拉普拉斯变换题目的前置条件比如让你先画出变换后的时域波形再求频谱。第三类是通信、电子、自动化方向低年级学生想通过一道典型题把横轴变换的底层逻辑彻底搞清楚。要明确一点这篇文章不会只讲一道题而是给出一个通用解法。无论原题给的 f(t) 是三角波、矩形波还是任意分段线性波形只要按照关键点映射法都能快速画出 f(atb)。这里也要说清楚边界信号变换作图只处理时间轴的线性变换不改变信号的纵坐标幅度。也就是说无论怎么压缩、平移、反转原信号幅度是多少新信号幅度仍然是多少。很多同学在这里会产生误解以为尺度变换会改变幅度后续求能量或功率时也会跟着错。3. 三种基本变换的图形效果在进入综合变换之前先把三个基本变换单独看一遍。这三个变换的结论非常重要后面所有复合变换都是它们的有序组合。3.1 反转变换 f(t) → f(-t)反转变换就是把原始信号沿纵轴翻转。图形看起来像照镜子一样原来的左半部分变到右半部分原来的右半部分变到左半部分。数学上原信号的特征点 t0 会映射到 -t0。举个例子如果原信号 f(t) 在 t 1 处有一个峰值那么 f(-t) 的峰值就在 t -1。理解反转的另一种方式是横轴上的取值方向反过来了。原来从左到右读信号反转后从右到左读信号。3.2 尺度变换 f(t) → f(at)尺度变换对应时间轴的压缩或扩展。当 |a| 1 时信号在时间轴方向被压缩。比如 f(2t)原来在 t 2 的位置现在落在 t 1 的位置。当 0 |a| 1 时信号在时间轴方向被扩展。比如 f(0.5t)原来在 t 1 的位置现在落在 t 2 的位置。尺度变换只改变横轴拉伸比例不改变纵轴幅度。这一点必须反复强调。3.3 时移 f(t) → f(t - t0)时移是三个变换里最容易判断的但也是最容易在复合变换中出错的。规则非常简单f(t - t0) 表示原信号向右平移 t0f(t t0) 表示原信号向左平移 t0。注意这里说的是 t - t0而不是 at b 这种整体形式。如果给的是 f(2t - 1)不能直接判断为右移 1必须先提取系数变成 f[2(t - 0.5)]才能确定是右移 0.5。这就是复合变换中最关键的一个动作先提取时间变量 t 的系数再做平移判断。4. 综合变换的通用解法思路对于 f(at b) 这种一般形式标准做法是先把表达式改写成 f[a(t b/a)]然后按照固定次序完成变换。综合变换常见的有两种操作次序第一种次序反转 → 尺度 → 时移。先处理 a 的符号问题再做缩放最后做平移。第二种次序尺度 → 反转 → 时移。如果先做尺度再处理反转最后平移也可以但必须保证每一步的变换基准正确。对于大多数初学者来说推荐使用第一种次序。原因在于先做反转可以尽快处理负号避免后续步骤中系数的正负干扰。但这里也要强调还有另一种更直接的解法关键点映射法。它不需要在脑海里模拟多步图像变化而是直接把原信号的特征点坐标代入方程算出新信号特征点的位置然后连线。这种方法特别适合考试时使用因为计算量小而且每一步都有数值可查不容易画错。下面用一道典型题来完整演示这两种方法。作为示例设原信号 f(t) 是一个分段线性三角波f(t) 0, t 0 f(t) t, 0 ≤ t ≤ 1 f(t) 2 - t, 1 ≤ t ≤ 2 f(t) 0, t 2也就是在 [0, 1] 区间上从 0 线性上升到 1在 [1, 2] 区间上从 1 线性下降到 0。目标画出 y(t) f(1 - 2t) 的波形。这个问题等价于 f(-2t 1)是尺度、时移、反转同时存在的综合变换题。5. 方法一关键点映射法关键点映射法的核心思想是线性变换不会改变分段线性信号的特征点性质。原信号在某个点发生上升、下降、峰值变化那么新信号一定也在对应位置发生相同性质的变化。原信号 f(t) 有三个特征点原信号位置 t纵坐标 f(t)特征说明00上升起点11峰值点20下降终点现在要求 y(t) f(1 - 2t)。令中间变量 τ 1 - 2t则原信号特征点满足 τ 等于0、1、2。所以有1 - 2t 0 → t 0.51 - 2t 1 → t 01 - 2t 2 → t -0.5整理成表格原信号特征点 τ新信号位置 t纵坐标 y(t)00.501012-0.50也就是说新信号 y(t) 的三个关键点是(-0.5, 0)、(0, 1)、(0.5, 0)。接下来确定斜率。原信号在 [0,1] 区间斜率为 1在 [1,2] 区间斜率为 -1。由于 y(t) f(1-2t)令 u 1 - 2t则 du/dt -2。所以新信号斜率与原信号斜率之间的关系是dy/dt (df/du) · (du/dt) f(u) · (-2)对应到两个区间区间 t ∈ [0, 0.5]对应 u ∈ [1, 0]。原斜率为 f(u) 1新斜率 1 × (-2) -2。区间 t ∈ [-0.5, 0]对应 u ∈ [2, 1]。原斜率为 f(u) -1新斜率 -1 × (-2) 2。所以最终 y(t) 的分段表达式为y(t) 0, t -0.5 y(t) 1 2t, -0.5 ≤ t ≤ 0 y(t) 1 - 2t, 0 ≤ t ≤ 0.5 y(t) 0, t 0.5波形是一个以 t 0 为对称轴的等腰三角波峰值仍在 1。这说明信号的纵坐标幅度没有改变只是时间轴发生了反转和压缩。关键点法的优点在于不需要在脑海中做连续动画式的变换只需要列出特征点算映射坐标再连起来画图。考场时间紧张的情况下这个方法最稳。6. 方法二分步变换法第二种方法是把综合变换拆成三个基本变换一步一步操作。这种方法更适合理解本质也适合在草稿纸上逐步验证。先把目标函数改写为标准形式y(t) f(1 - 2t) f[-2(t - 0.5)]这里的关键动作是提取系数 2并且保留负号。提取之后才能判断平移量。如果直接看 f(-2t 1)很容易误判为左移 1但实际是右移 0.5。接下来按照“反转 → 尺度 → 时移”的步骤执行。6.1 第一步反转从 f(t) 到 f(-t)。原三角波区间 [0, 2] 经过反转变为 [-2, 0]峰值点从 t 1 变为 t -1。波形关于纵轴翻转。此时图形是一个“左高右低”的三角波最高点在 t -1。6.2 第二步尺度压缩从 f(-t) 到 f(-2t)。横向压缩 2 倍区间从 [-2, 0] 变为 [-1, 0]峰值点从 t -1 变为 t -0.5。注意这里仍然不改变纵坐标幅度峰值还是 1。6.3 第三步时移从 f(-2t) 到 f[-2(t - 0.5)]。这一步是右移 0.5。区间从 [-1, 0] 变为 [-0.5, 0.5]峰值点从 t -0.5 变为 t 0。最终结果和方法一完全一致一个以 t 0 为对称轴的等腰三角波区间 [-0.5, 0.5]峰值 1。对比两种方法关键点法适合考试实战分步变换法适合学习理解和检查。实际做题时可以先用关键点法算出特征点位置再用分步法确认变换顺序无误双保险。7. 用 Python 数值验证波形为了避免手动画图出现视觉误差可以用 Python 做一次数值验证。这个方法也适合平时做作业时自查。代码如下import numpy as np import matplotlib.pyplot as plt def f(t): # 原信号分段线性三角波 conds [t 0, (t 0) (t 1), (t 1) (t 2), t 2] funcs [0, t, 2 - t, 0] return np.select(conds, funcs) # 原信号 t_orig np.linspace(-1, 3, 1000) y_orig f(t_orig) # 变换后的信号 y(t) f(1 - 2t) t_new np.linspace(-1, 1.5, 1000) y_new f(1 - 2 * t_new) # 检查非零区间 nonzero t_new[y_new 1e-6] print(y(t) 非零区间:, nonzero.min(), 至, nonzero.max()) print(y(t) 峰值:, y_new.max()) # 绘图 fig, axes plt.subplots(2, 1, figsize(8, 6)) axes[0].plot(t_orig, y_orig, linewidth2) axes[0].set_title(f(t)) axes[0].grid(True) axes[0].set_ylim(-0.2, 1.4) axes[1].plot(t_new, y_new, linewidth2, colororange) axes[1].set_title(y(t) f(1 - 2t)) axes[1].grid(True) axes[1].set_ylim(-0.2, 1.4) plt.tight_layout() plt.show()运行后的输出结果非零区间-0.5 至 0.5峰值1.0这和前面两种方法手算的结果完全一致。数值验证的另一个好处是如果题目要求画任意给定波形比如矩形波可以替换 f(t) 的定义然后重新绘图检查。对于不是连续折线的信号比如指数函数、三角函数Python 验证也同样适用。8. 易错点与高分技巧这道题本身不难但错误率很高主要集中在这五个地方。8.1 平移量判断错误最容易错的是 f(1 - 2t) 的平移量。很多同学会机械地认为 f(t 1) 左移 1所以 f(-2t 1) 也是左移 1。这个思路的问题在于没有先提取系数。正确做法是把表达式改写为 f[-2(t - 0.5)]这时才能判断是右移 0.5。先提取系数再判断平移方向这是整个综合变换题的黄金步骤。8.2 变换顺序混乱有些同学先做尺度和时移再做反转结果每一步的参考坐标都在变化很容易画错。建议固定一种顺序比如统一的“反转 → 尺度 → 时移”。每次都用同一种顺序熟练之后可以降低出错率。如果非要用“先平移、后尺度、再反转”这种顺序需要非常清楚每一步变换的基准是什么通常不建议初学者尝试。8.3 忽略反转当 a 为负数时必须做反转。比如 f(1 - 2t) 中的 a 是 -2很多同学只做了压缩和右移忘了信号还要翻过来。反映到特征点上原信号的峰值在 t 1新信号峰值在 t 0。如果没有做反转峰值位置会算成 t 0.5 或 t 1和后面对不上。8.4 误改纵坐标幅度这是普遍存在的误解。尺度变换 f(at) 只改变时间轴不改变纵坐标幅度。原信号最大值为 1变换后最大值为 1。如果题目后续问到能量或者功率这一条尤其重要。8.5 斜率符号和大小如果题目要求写出分段函数表达式必须注意新信号斜率等于原信号斜率乘以 du/dt。对于 f(1 - 2t) 来说u 1 - 2t所以所有斜率都要乘以 -2。这就是为什么新信号两个区间的斜率分别是 2 和 -2而不是原来的 1 和 -1。9. 考场做题标准流程推荐一套可以直接套用的做题流程无论题目给出的 f(t) 是什么形状都按这套流程走。第一步把目标函数写成 f[a(t b/a)] 的形式。这一步必须写出它是后续所有判断的基础。第二步列出原信号所有特征点的坐标包括起点、终点、峰值点、折点。如果原信号是矩形波就需要列出上升沿和下降沿位置。第三步令中间变量等于原信号特征点解出新的时间位置。这一步得到的是新信号的特征点表。第四步根据特征点表画出新信号草图。如果原信号在某区间是直线新信号对应区间也是直线直接连接特征点即可。如果原信号是曲线需要额外判断曲线的趋势。第五步用斜率关系检查。对新信号每个分段计算斜率确认特征点之间的递增递减关系没有反。这套流程对于 f(-2t1)、f(3t2)、f(2-t) 等各类复合变换都有效。区别只是提取系数之后a 的值不同反转和压缩的比例不同。10. 常见问题与排查方法在实际做题和编程验证过程中可能会遇到一些具体问题整理成下表。问题现象可能原因排查方式解决方案新信号左右方向和答案相反没有做反转观测 a 的正负a 0 时先画反转平移量看起来不对没有提取系数将 f(atb) 改写为 f[a(tb/a)]以提取后的内部表达式为准峰值位置对不上只做了平移没做尺度用特征点方程逐一验证令内部表达式等于原位置分段函数斜率错误忘记乘以 du/dt检查每个分段斜率新斜率 原斜率 × a纵坐标幅度变了误以为压缩会改幅度比较原信号幅值横轴变换不改纵坐标Python 画出来没有图形f(t) 定义域表达式写错打印每个区间的值用 np.select 替代多重 if峰值为空或为零输入的 t_new 范围太小检查 t_new 是否覆盖非零区间扩大 linspace 范围第 5 条和第 6 条是很多同学用代码验证时才会遇到的问题。实际上 Python 验证并不复杂关键是 f(t) 的分段表达式要和手算一致。11. 同型题变式训练这类综合变换题出题人通常会在两个方向变换系数 a 的取值以及 b 的正负。下面列两个常见变式帮助你把方法用熟。11.1 变式一f(2t 1)先提取系数f(2t 1) f[2(t 0.5)]a 2不需要反转压缩 2 倍。因为是 t 0.5所以左移 0.5。原三角波经过压缩后区间为 [0, 1]峰值点从 t 1 变为 t 0.5再左移 0.5区间变为 [-0.5, 0.5]峰值点变为 t 0。注意这个结果和 f(1 - 2t) 类似区间也是 [-0.5, 0.5]峰值也在 t 0。区别在于 f(1 - 2t) 的上升下降方向与原信号相反而 f(2t 1) 的上升下降方向与原信号相同。11.2 变式二f(1 - t)提取系数f(1 - t) f[-(t - 1)]a -1需要反转。因为 t - 1所以右移 1。原三角波反转后区间为 [-2, 0]峰值在 t -1再右移 1区间变为 [-1, 1]峰值在 t 0。这个变式说明当 |a| 1 时没有压缩只做反转和平移计算更简单。每个变式都可以用前面讲的关键点法走一遍熟能生巧。12. 总结与下一步这类信号变换作图题最值得花时间掌握的就是关键点映射法。把原信号的特征点坐标代入新表达式算出新坐标再连线整个过程不超过两分钟比在脑子里模拟动画式变换可靠得多。开始做题时建议先验证最简单的 f(2t) 和 f(-t)确认自己完全理解基本变换后再做综合题。最容易踩的坑有两个一是 f(-2t 1) 这种形式的平移方向判断二是忘记斜率需要乘以系数 a。后续可以继续扩展的方向很多时域变换之后画频谱也就是傅里叶变换的尺度性质和平移性质或者利用波形变换去求解卷积因为卷积的图解中同样依赖信号左右反转和平移。把这篇文章的方法吃透后面学习卷积图解、傅里叶变换性质会轻松很多。建议用文中的 Python 代码把自己手里的真题验证一遍把关键点映射法变成肌肉记忆考场直接套流程。