ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

信号与系统综合变换作图:从关键点法到f(1-2t)波形绘制

信号与系统综合变换作图:从关键点法到f(1-2t)波形绘制 每位学习“信号与系统”的同学遇到“已知 f(t) 的波形求 f(1-2t) 或 f(-2t1) 并作图”这类题目时多少都会紧张一下。原因倒不是题目本身有多难而是三种基本运算——尺度变换、时移、反转——叠加在一起后大家经常搞不清楚“先平移还是先压缩”“反转之后区间怎么算”。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 matplotlib2.3 示例项目结构本文的 Python 验证部分只需要一个脚本文件项目结构非常简单signal_transform/ ├── plot_signal.py # 绘制 f(t) 与 f(1-2t) 的对比图 └── requirements.txt # 依赖说明可选如果你只是在 Jupyter Notebook 中运行那连项目结构都不需要直接在一个 cell 中写代码即可。下面我们在第 4 节给出完整可运行的 Python 脚本。3. 核心方法关键点法求解信号变换3.1 关键点法的基本思想“关键点法”的思路非常简单找到原信号 f(t) 波形上的所有关键横坐标例如折点、端点、跳变点代入变换关系式求出这些关键点在新信号中的横坐标保持每个关键点对应的函数值不变在新坐标系中重新连线。为什么关键点法有效因为绝大多数信号与系统课程中的作图题给出的都是分段折线信号。这类信号可以完全由少数几个关键点确定。只要关键点的位置准确折线连接后波形自然正确。例如原信号 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-10B01C11D20现在要求画出 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函数值-1100011-112-20第二步尺度压缩。 f(-t) → f(-2t)。横坐标整体除以 2注意这里是针对自变量 t 的压缩系数绝对值 2 表示波形压缩为原来的一半。定义域由 [-2, 1] 变为 [-1, 0.5]。关键点坐标变为上一步坐标 v新坐标 v/2函数值10.50001-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.51000.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函数值-100011121230第二步尺度压缩并反转即整体乘以 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(11)/2 101(1-0)/2 0.511(1-1)/2 020(1-2)/2 -0.5将新坐标从小到大排列新坐标 t函数值-0.50010.5110可以看到新波形在 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, linewidth2) plt.title(Original Signal $f(t)$) plt.xlabel(t) plt.ylabel(f(t)) plt.grid(True) plt.axhline(0, colorblack, linewidth0.8) plt.axvline(0, colorblack, linewidth0.8) plt.xlim(-2, 3) plt.ylim(-0.2, 1.5) plt.subplot(1, 2, 2) plt.plot(t, y_new, linewidth2, colorred) plt.title(Transformed Signal $f(1-2t)$) plt.xlabel(t) plt.ylabel(y(t)) plt.grid(True) plt.axhline(0, colorblack, linewidth0.8) plt.axvline(0, colorblack, linewidth0.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 结果说明与验证除了画图我们还可以选取几个特殊点做数值验证确保变换关系无误。验证点 1t 0。y(0) f(1 - 2×0) f(1) 1验证点 2t 0.75。y(0.75) f(1 - 1.5) f(-0.5) -0.5 1 0.5验证点 3t 1。y(1) f(1 - 2) f(-1) 0验证点 4t -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)ug(t)先求反函数 tg⁻¹(u)端点刚好落下但折点错误漏掉了某个转折点检查原波形所有折点并确认定义域边界5.3 手写作图自检清单做完一道题后推荐按下面的清单检查是否列出了原信号的所有关键点端点、折点、跳变点是否将每个关键点代入反解公式求出了新横坐标是否将新横坐标从小到大重新排序是否保留了每个关键点对应的函数值最终定义域是否与题目要求一致是否用 1 到 2 个特殊点做了代数验证是否检查了平顶段、上升段、下降段的方向与斜率6. 最佳实践与考试技巧6.1 做题流程固定化在考场上不要临时发挥建议把信号变换作图题固定为四步流程。第一步写变换关系。先把要求的信号写成 y(t) f(at b) 的形式例如 f(1 - 2t) 对应 a -2b 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.5200110.5011-10这种表格既能辅助作图也能作为验证手段比单纯靠“压缩、平移”的直觉可靠得多。6.3 考研与期末备考的针对性建议对于 2024 年成都信息工程大学这类“信号与系统”真题综合变换作图通常不会单独考而是与后续章节结合。例如与卷积结合求两个信号的卷积时需要先对其中一个信号做反转和平移这本质上就是综合变换。与傅里叶变换性质结合尺度变换性质、时移性质在频域中对应着频谱的压缩与相位旋转理解时域波形变换有助于记住频域性质。与系统响应结合输入信号经过 LTI 系统后的零状态响应经常涉及信号的反转和时移。因此建议备考时不要孤立地背“左加右减”而是把变换放到系统框图中理解自变量替换的本质是改变信号的时间尺度与观察起点。6.4 工程信号处理中的对应意义或许有同学会问“这类题除了考试工程里真的有用吗”其实非常有意义。在雷达、通信、音频处理中信号经常需要做时间尺度变换。例如音频变速不变调处理本质上是时域尺度变换与频域修正的组合雷达回波的多普勒效应回波信号相对于发射信号存在时间压缩或扩展对应尺度变换通信系统中的码元同步接收端需要估计发送端信号的时移量本质是时移处理图像缩放与翻转虽然对象是二维图像但每一行的处理思路和一维信号的尺度、反转完全一致。理解了这些工程背景再看“已知 f(t) 画 f(-2t1)”这类题就不会觉得它只是纯数学游戏了。7. 总结与学习路线本文以“2024 年成都信息工程大学信号与系统真题 2.1”类题型为例完整梳理了信号的尺度、时移、反转综合变换作图方法。核心要点如下三种基本变换中时移改变观察起点尺度改变时间轴比例反转改变时间轴方向综合变换统一使用“关键点法”把原信号关键点代入反解公式求新坐标再排序连线遇到 f(1 - 2t) 这类表达式时不要凭直觉判断平移方向建议先改写成 f[-2(t - 1/2)] 的形式新横坐标计算完成后必须从小到大重新排序否则容易忽略反转导致的左右镜像手绘完成后选取特殊点做代数验证是避免低级错误最有效的方法。下一步可以继续学习的内容包括卷积的图形化计算其中信号反转和平移将频繁出现傅里叶变换的时移性质和尺度变换性质建立时域与频域的对应关系LTI 系统的时域分析理解单位冲激响应与零状态响应之间的卷积关系采样定理与离散时间信号体会连续时间尺度变换在离散系统中的对应形式。实际做题时优先关注三点风险一是变换顺序二是关键点排序三是端点函数值的闭合性。把这三点处理好这类题基本不会丢分。建议找教材中的中等难度习题每天练习 3 到 5 道熟练后可以尝试用 Python 画出原信号和变换信号进行对照逐步建立可靠的图形直觉和代数验证能力。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进