☰
信号与系统综合变换作图:从关键点法到f(1-2t)波形绘制
2026/9/27 21:00:15 网站建设 项目流程

每位学习“信号与系统”的同学,遇到“已知 f(t) 的波形,求 f(1-2t) 或 f(-2t+1) 并作图”这类题目时,多少都会紧张一下。原因倒不是题目本身有多难,而是三种基本运算——尺度变换、时移、反转——叠加在一起后,大家经常搞不清楚“先平移还是先压缩”“反转之后区间怎么算”。2024 年成都信息工程大学信号与系统真题第 2.1 题考查的正是这类综合变换作图。本文以该类高频题型为例,把从数学推导到波形绘制的完整流程拆开讲清楚,适合考研复习、期末备考以及正在学习信号与系统课程的同学参考。

1. 背景与核心概念

1.1 什么是信号的尺度、时移、反转综合变换

在信号与系统中,我们经常需要根据已知信号 f(t) 的波形,画出经过自变量变换后的信号波形。最常见的基本变换有三种:

  • 时移:f(t) → f(t - t₀),表示波形在时间轴上整体平移。
  • 反转:f(t) → f(-t),表示波形关于纵轴做镜像翻转。
  • 尺度变换:f(t) → f(at),表示波形在时间轴上被压缩或扩展。

当题目要求画出 f(1 - 2t)、f(-2t + 1)、f(3t + 2) 这类信号时,实际上就是同时使用了上述两种甚至三种运算。这类题的难点不在于单个变换,而在于多个变换的复合顺序:顺序不同,中间过程的波形不同,但最终结果必须一致。

1.2 为什么综合变换题总有人做错

很多同学在初学阶段会凭“感觉”作图:看到系数 2 就认为是压缩,看到 +1 就认为是左移。但实际操作时,经常会得到完全错误的波形。根本原因可以总结为三点。

第一,对“谁在变”理解不深。 y(t) = f(1 - 2t) 中,真正的时间变量是 t,而 1 - 2t 是整个表达式替换掉了原函数 f 的自变量。我们不是直接平移 f(t),而是把 t 这个变量先做了反转、尺度、时移后再送入 f。

第二,分不清“先平移再压缩”和“先压缩再平移”的区别。以 f(1 - 2t) 为例,它可以写成 f[-2(t - 1/2)],也可以写成 f[-(2t - 1)]。不同写法对应不同的作图顺序,但最终图像是同一个。很多同学只记住零散的“左加右减、压缩扩展”口诀,却没有掌握统一的自变量替换方法。

第三,关键点坐标算错。波形图本质上是由一些关键点(端点、折点、跳变点)连接而成的。只要这些点的横坐标计算正确,波形形状就不会错。但同学们往往忽略“新的横坐标求解”这一步,直接靠肉眼推测,自然容易出错。

1.3 本文要解决什么问题

本文围绕“已知 f(t) 波形,求 f(1 - 2t) 并作图”这类题型,梳理一套完整的求解方法。这套方法不仅适用于本例题,也适用于任意形如 f(at + b) 的信号变换。文章会先讲清楚三种基本变换的本质,再给出可复用的“关键点法”,最后用 2024 年成都信息工程大学 2.1 这类的真题题型做完整演示,并附上 Python 数值验证代码。

2. 环境准备与工具说明

2.1 手写作图需要的工具

考试和作业场景下,我们通常不需要任何软件,只需要:

  • 草稿纸和铅笔;
  • 直尺(用于画坐标轴和坐标网格);
  • 一块好用的橡皮。

虽然工具简单,但做题时建议养成“先推导、后作图”的习惯。不要上来就画波形,而是先把关键点的坐标变换关系写清楚,再动笔连线。

2.2 用 Python 做数值验证的环境

如果希望在课后验证自己的手绘结果是否正确,可以使用 Python 配合 NumPy 和 Matplotlib 画图。推荐环境如下:

  • 操作系统:Windows / macOS / Linux 均可;
  • Python:建议 3.8 及以上版本;
  • 第三方库:numpy、matplotlib。

版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。如果你本机还没安装相关库,可以在命令行执行:

pip install numpy matplotlib

2.3 示例项目结构

本文的 Python 验证部分只需要一个脚本文件,项目结构非常简单:

signal_transform/ ├── plot_signal.py # 绘制 f(t) 与 f(1-2t) 的对比图 └── requirements.txt # 依赖说明,可选

如果你只是在 Jupyter Notebook 中运行,那连项目结构都不需要,直接在一个 cell 中写代码即可。下面我们在第 4 节给出完整可运行的 Python 脚本。

3. 核心方法:关键点法求解信号变换

3.1 关键点法的基本思想

“关键点法”的思路非常简单:

  1. 找到原信号 f(t) 波形上的所有关键横坐标,例如折点、端点、跳变点;
  2. 代入变换关系式,求出这些关键点在新信号中的横坐标;
  3. 保持每个关键点对应的函数值不变,在新坐标系中重新连线。

为什么关键点法有效?因为绝大多数信号与系统课程中的作图题,给出的都是分段折线信号。这类信号可以完全由少数几个关键点确定。只要关键点的位置准确,折线连接后波形自然正确。

例如原信号 f(t) 的关键点为 t = -1, 0, 1, 2,要画 y(t) = f(1 - 2t),只需要求解方程:

1 - 2t = -1 1 - 2t = 0 1 - 2t = 1 1 - 2t = 2

得到新的横坐标,再把原函数值一一对应地搬过来即可。

3.2 三种基本变换的本质

在运用关键点法之前,必须先理解三种基本变换的本质。

先看时移。 y(t) = f(t - t₀) 表示把 f(t) 的波形整体向右平移 t₀ 个单位(t₀ > 0 时)。这里的“右移”是相对于 t 轴而言的,验证方法很简单:原信号在 t = 0 处的值,会移动到 t = t₀ 处,因为令 t - t₀ = 0,解得 t = t₀。

再看反转。 y(t) = f(-t) 表示把 f(t) 的波形关于纵轴翻转。原信号在 t = 1 处的值,会移动到 t = -1 处,因此左右完全镜像。

最后看尺度变换。 y(t) = f(at) 的压缩或扩展取决于 |a| 的大小:

  • |a| > 1 时,波形在时间轴上被压缩;
  • 0 < |a| < 1 时,波形在时间轴上被扩展;
  • a < 0 时,除了压缩/扩展,还伴随反转。

举一个最小例子:若 f(t) 是一个在 [0, 2] 上的三角波,那么 f(2t) 的波形会压缩在 [0, 1] 上;而 f(t/2) 的波形会扩展到 [0, 4] 上。

3.3 综合变换的统一推导方式

对于 y(t) = f(1 - 2t),可以令中间变量 u = 1 - 2t。此时 y(t) = f(u)。反解出:

u = 1 - 2t t = (1 - u) / 2

利用这个关系式,原信号 u 的每一个关键点都可以映射到新坐标 t。例如原信号在 u = -1 处取值 0,代入 t = (1 - u)/2 得到 t = 1,说明新信号在 t = 1 处取值为 0。

这种“代入反解”的方式是求解所有信号变换题的通用方法。它不依赖“先平移还是先压缩”的直觉,只要会解一元一次方程,就能算对所有关键点。

3.4 区间端点与跳变点的处理

如果原信号包含矩形脉冲或阶跃跳变,那么除了折点,还要关注跳变点的位置。跳变点同样使用上述反解公式求新坐标,但要注意:

  • 函数值保持原样时,跳变方向不变;
  • 如果两个关键点在新坐标下发生了顺序颠倒(例如原信号从左到右是 A、B、C,新信号从左到右变成 C、B、A),说明整体波形发生了反转,连线顺序也要跟着反转;
  • 跳变点如果被压缩到同一点,需要单独判断是否出现重叠。

4. 完整实战:以 2024 年成都信息工程大学 2.1 题题型为例

4.1 题目条件与波形

2024 年成都信息工程大学信号与系统真题第 2.1 题考查的就是尺度、时移、反转综合变换作图,具体风格为:已知信号 f(t) 的波形,画出 f(1 - 2t) 的波形。这里我们采用与该题型完全一致的同构题作为演示。

已知 f(t) 的波形如图 1 所示(用 ASCII 简图表示):

f(t) 1 | ________ | / \ 0 |_____/ \_____ +----+----+----+----+----> t -1 0 1 2 3

对应的分段函数表达式为:

⎧ t + 1, -1 ≤ t < 0 f(t) = ⎨ 1, 0 ≤ t ≤ 1 ⎩ -t + 2, 1 < t ≤ 2

也就是说,原信号 f(t) 是一个上升段、平顶段、下降段组成的折线波形,定义在 t ∈ [-1, 2] 上。关键点为:

关键点编号横坐标 u函数值 f(u)
A-10
B01
C11
D20

现在要求画出 y(t) = f(1 - 2t) 的波形。为了与手写步骤对应,下面同时给出两条等价作图路径。

4.2 路径一:先反转、再尺度、后时移

路径一的思路是把 f(1 - 2t) 改写成 f[-2(t - 1/2)]。从内向外拆解:

f(t) → f(-t) → f(-2t) → f(-2(t - 1/2))

第一步:反转。 f(t) → f(-t)。

原信号定义域 [-1, 2],反转后定义域变为 [-2, 1]。上升段变为下降段,下降段变为上升段。关键点坐标变为:

原坐标 u新坐标 -u函数值
-110
001
1-11
2-20

第二步:尺度压缩。 f(-t) → f(-2t)。

横坐标整体除以 2(注意这里是针对自变量 t 的压缩,系数绝对值 2 表示波形压缩为原来的一半)。定义域由 [-2, 1] 变为 [-1, 0.5]。关键点坐标变为:

上一步坐标 v新坐标 v/2函数值
10.50
001
-1-0.51
-2-10

第三步:时移。 f(-2t) → f(-2(t - 1/2))。

这里要特别小心: f(-2(t - 1/2)) = f(-2t + 1),所以需要对自变量整体加上 1/2,等价于波形向右平移 1/2 个单位。定义域由 [-1, 0.5] 变为 [-0.5, 1]。关键点坐标最终变为:

上一步坐标 w新坐标 w + 0.5函数值
0.510
00.51
-0.501
-1-0.50

因此最终 y(t) = f(1 - 2t) 的定义域为 t ∈ [-0.5, 1],波形从 (-0.5, 0) 上升,经过 (0, 1) 和 (0.5, 1) 的平顶,再下降到 (1, 0)。

4.3 路径二:先时移、再尺度、后反转

路径二的思路是把 f(1 - 2t) 改写成 f[-(2t - 1)]。从内向外拆解:

f(t) → f(t - 1) → f(2t - 1) → f(1 - 2t)

第一步:时移。 f(t) → f(t - 1)。

原信号整体右移 1 个单位,定义域由 [-1, 2] 变为 [0, 3]。关键点坐标变为:

原坐标 u新坐标 u + 1函数值
-100
011
121
230

第二步:尺度压缩并反转(即整体乘以 2 再取负)。 f(t - 1) → f(2t - 1)。

为什么是“乘以 2 再取负”?因为 f(1 - 2t) = f(-(2t - 1)),而 f(2t - 1) 是原始信号自变量乘以 2 后平移 -1 的结果。这一步是先把上一步的坐标乘以 2,再整体反转。

上一步的关键点为 t = 0, 1, 2, 3。先做尺度乘以 2:坐标变为 0, 2, 4, 6;再做反转取负:坐标变为 0, -2, -4, -6。此时得到的信号是 f(-2t) 还是 f(-2t?) 需要仔细核验。

实际上,更严谨的拆法是:

f(t) → f(2t) → f(2t - 1) → f(1 - 2t)

但这样拆解时, f(2t - 1) 变成 f(1 - 2t) 的过程是“自变量取负并加 1”,同样容易混淆。为了减少中间过程的认知负担,这里推荐使用 4.2 节的路径一,或者直接使用下一小节的关键点法。

4.4 关键点法直接求解

如果觉得分步作图太绕,可以直接使用关键点法,一步到位。

目标:已知 f(u) 的关键点为 u = -1, 0, 1, 2,求 y(t) = f(1 - 2t)。

令:

u = 1 - 2t t = (1 - u) / 2

逐个代入:

原关键点 u原函数值 f(u)新坐标 t = (1-u)/2
-10(1+1)/2 = 1
01(1-0)/2 = 0.5
11(1-1)/2 = 0
20(1-2)/2 = -0.5

将新坐标从小到大排列:

新坐标 t函数值
-0.50
01
0.51
10

可以看到,新波形在 t ∈ [-0.5, 1] 上有定义,从左到右依次经过 (-0.5, 0) → (0, 1) → (0.5, 1) → (1, 0)。这恰好是原信号先反转、再压缩 2 倍的结果。手绘波形如下:

y(t) = f(1-2t) 1 | _______ | / \ 0 |__/ \___ +----+----+----+----+----> t -0.5 0 0.5 1 1.5

需要特别提醒的是:这里“新坐标从小到大排列”这一步很关键。因为 u = 1 - 2t 是 t 的减函数,所以原信号从左到右的 A、B、C、D 点,对应到新信号中会变成从右到左的 D、C、B、A 点。如果忽略排序,就会把波形画反。

4.5 用 Python 绘制验证

为了验证手绘结果,我们可以用 Python 画出 f(t) 和 y(t) = f(1 - 2t) 的对比图。完整代码如下:

# 文件路径:signal_transform/plot_signal.py import numpy as np import matplotlib.pyplot as plt # 定义原始信号 f(t) def f(t): # 默认输出 0,避免区间外出现意外值 out = np.zeros_like(t) # 上升段:-1 <= t < 0 cond1 = (t >= -1) & (t < 0) # 平顶段:0 <= t <= 1 cond2 = (t >= 0) & (t <= 1) # 下降段:1 < t <= 2 cond3 = (t > 1) & (t <= 2) out = np.where(cond1, t + 1, out) out = np.where(cond2, 1.0, out) out = np.where(cond3, -t + 2, out) return out # 生成时间轴 t = np.linspace(-2, 3, 2000) # 原始信号 y_orig = f(t) # 变换后的信号 y(t) = f(1 - 2t) y_new = f(1 - 2 * t) # 绘图 plt.figure(figsize=(10, 4)) plt.subplot(1, 2, 1) plt.plot(t, y_orig, linewidth=2) plt.title('Original Signal $f(t)$') plt.xlabel('t') plt.ylabel('f(t)') plt.grid(True) plt.axhline(0, color='black', linewidth=0.8) plt.axvline(0, color='black', linewidth=0.8) plt.xlim(-2, 3) plt.ylim(-0.2, 1.5) plt.subplot(1, 2, 2) plt.plot(t, y_new, linewidth=2, color='red') plt.title('Transformed Signal $f(1-2t)$') plt.xlabel('t') plt.ylabel('y(t)') plt.grid(True) plt.axhline(0, color='black', linewidth=0.8) plt.axvline(0, color='black', linewidth=0.8) plt.xlim(-2, 3) plt.ylim(-0.2, 1.5) plt.tight_layout() plt.show()

运行这段代码后,会得到两个子图。左图是原始信号 f(t),右图是变换后的 f(1 - 2t)。右图中可以看到,波形定义域变为 [-0.5, 1],且从左到右先上升、再平顶、后下降,与手绘结果完全一致。

4.6 结果说明与验证

除了画图,我们还可以选取几个特殊点做数值验证,确保变换关系无误。

验证点 1:t = 0。

y(0) = f(1 - 2×0) = f(1) = 1

验证点 2:t = 0.75。

y(0.75) = f(1 - 1.5) = f(-0.5) = -0.5 + 1 = 0.5

验证点 3:t = 1。

y(1) = f(1 - 2) = f(-1) = 0

验证点 4:t = -0.5。

y(-0.5) = f(1 - 2×(-0.5)) = f(2) = 0

这些特殊点与前面表格中的关键点完全吻合。由此可以确定,关键点法的计算结果是正确的。

5. 常见错误与排查思路

5.1 最容易错的三个地方

综合变换作图题的错误通常集中在三个环节。

第一,时移方向搞反。很多人看到 f(1 - 2t) 中的 +1,就认为波形应该左移。实际上,如果写成 f[-2(t - 1/2)],可以看到对 t 而言是减 1/2,对应右移 1/2 个单位。不要只看括号内常数项的符号,要统一写成 f[a(t - t₀)] 的形式后再判断。

第二,先平移再压缩时,平移量没有跟着缩放。例如从 f(t) 到 f(2t - 1),如果一开始先平移 1 个单位,再压缩 2 倍,得到的是 f(2(t - 1)) = f(2t - 2),这并不等于 f(2t - 1)。正确的拆法是先压缩成 f(2t),再右移 1/2 个单位,得到 f(2(t - 1/2)) = f(2t - 1)。

第三,忘了反转会导致关键点排序变化。当变换关系式中 t 的系数为负时,原信号从左到右的关键点在新信号中会从右到左排列。很多同学在关键点法中算出了所有新坐标,但没有重新排序,直接按原顺序连线:把本应出现在右侧的点画到了左侧,最后整体镜像错误。

5.2 错误现象与修正对照表

下面给出几种常见错误现象、可能原因和解决思路。

问题现象常见原因解决思路
波形左右颠倒忽视了负系数引起的反转计算出新坐标后按横坐标从小到大重新排序
定义域范围不对时移和尺度变换顺序搞混将式子统一写成 f[a(t - t₀)] 的形式再作图
平顶段宽度错误只压缩没平移,或只平移没压缩用关键点法逐个代入,求每个关键点的新坐标
函数值对不上代入时把 u 和 t 搞混明确 y(t)=f(u),u=g(t),先求反函数 t=g⁻¹(u)
端点刚好落下但折点错误漏掉了某个转折点检查原波形所有折点,并确认定义域边界

5.3 手写作图自检清单

做完一道题后,推荐按下面的清单检查:

  • 是否列出了原信号的所有关键点(端点、折点、跳变点)?
  • 是否将每个关键点代入反解公式,求出了新横坐标?
  • 是否将新横坐标从小到大重新排序?
  • 是否保留了每个关键点对应的函数值?
  • 最终定义域是否与题目要求一致?
  • 是否用 1 到 2 个特殊点做了代数验证?
  • 是否检查了平顶段、上升段、下降段的方向与斜率?

6. 最佳实践与考试技巧

6.1 做题流程固定化

在考场上不要临时发挥,建议把信号变换作图题固定为四步流程。

第一步,写变换关系。先把要求的信号写成 y(t) = f(at + b) 的形式,例如 f(1 - 2t) 对应 a = -2,b = 1。

第二步,列关键点表。把原信号所有关键点的横坐标 u 和函数值 f(u) 列出来。

第三步,反解新坐标。利用 u = at + b,得到 t = (u - b)/a,逐个计算新横坐标。

第四步,排序连线。将新坐标从小到大排序,保持函数值不变,依次连线。如果原信号有跳变,用实心点和空心点分别标记起点和终点。

6.2 用代数检验代替图像直觉

图像直觉在初学时很有用,但也很容易误导。更可靠的做法是“代数检验”。

以 f(1 - 2t) 为例,任意取几个简单 t 值,比如 t = 0、t = 0.5、t = 1,计算对应的函数值,再观察手绘图中的位置是否匹配。只要特殊点对上,波形大体就不会错。

当遇到复杂信号时,甚至可以在草稿纸上列一张“点对点”映射表:

t1 - 2tf(1 - 2t)
-0.520
011
0.501
1-10

这种表格既能辅助作图,也能作为验证手段,比单纯靠“压缩、平移”的直觉可靠得多。

6.3 考研与期末备考的针对性建议

对于 2024 年成都信息工程大学这类“信号与系统”真题,综合变换作图通常不会单独考,而是与后续章节结合。例如:

  • 与卷积结合:求两个信号的卷积时,需要先对其中一个信号做反转和平移,这本质上就是综合变换。
  • 与傅里叶变换性质结合:尺度变换性质、时移性质在频域中对应着频谱的压缩与相位旋转,理解时域波形变换有助于记住频域性质。
  • 与系统响应结合:输入信号经过 LTI 系统后的零状态响应,经常涉及信号的反转和时移。

因此建议备考时不要孤立地背“左加右减”,而是把变换放到系统框图中理解:自变量替换的本质是改变信号的时间尺度与观察起点。

6.4 工程信号处理中的对应意义

或许有同学会问:“这类题除了考试,工程里真的有用吗?”其实非常有意义。在雷达、通信、音频处理中,信号经常需要做时间尺度变换。例如:

  • 音频变速不变调处理:本质上是时域尺度变换与频域修正的组合;
  • 雷达回波的多普勒效应:回波信号相对于发射信号存在时间压缩或扩展,对应尺度变换;
  • 通信系统中的码元同步:接收端需要估计发送端信号的时移量,本质是时移处理;
  • 图像缩放与翻转:虽然对象是二维图像,但每一行的处理思路和一维信号的尺度、反转完全一致。

理解了这些工程背景,再看“已知 f(t) 画 f(-2t+1)”这类题,就不会觉得它只是纯数学游戏了。

7. 总结与学习路线

本文以“2024 年成都信息工程大学信号与系统真题 2.1”类题型为例,完整梳理了信号的尺度、时移、反转综合变换作图方法。核心要点如下:

  • 三种基本变换中,时移改变观察起点,尺度改变时间轴比例,反转改变时间轴方向;
  • 综合变换统一使用“关键点法”,把原信号关键点代入反解公式求新坐标,再排序连线;
  • 遇到 f(1 - 2t) 这类表达式时,不要凭直觉判断平移方向,建议先改写成 f[-2(t - 1/2)] 的形式;
  • 新横坐标计算完成后,必须从小到大重新排序,否则容易忽略反转导致的左右镜像;
  • 手绘完成后,选取特殊点做代数验证,是避免低级错误最有效的方法。

下一步可以继续学习的内容包括:

  • 卷积的图形化计算,其中信号反转和平移将频繁出现;
  • 傅里叶变换的时移性质和尺度变换性质,建立时域与频域的对应关系;
  • LTI 系统的时域分析,理解单位冲激响应与零状态响应之间的卷积关系;
  • 采样定理与离散时间信号,体会连续时间尺度变换在离散系统中的对应形式。

实际做题时,优先关注三点风险:一是变换顺序,二是关键点排序,三是端点函数值的闭合性。把这三点处理好,这类题基本不会丢分。建议找教材中的中等难度习题,每天练习 3 到 5 道,熟练后可以尝试用 Python 画出原信号和变换信号进行对照,逐步建立可靠的图形直觉和代数验证能力。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询