尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

信号与系统波形变换作图:关键点跟踪法与代入法详解

信号与系统波形变换作图:关键点跟踪法与代入法详解 考研信号与系统里波形变换作图是一道“看起来很简单、做起来总出错”的题。很多同学在学完尺度变换、时移、反转之后单独画每一步都能画对一旦题目把三个操作组合在一起比如要求画出f(2-2t)的波形就很容易在“先平移还是先尺度”的顺序上被绕进去。2024 年成都信息工程大学这道 2.1 题就是典型的尺度、时移、反转综合变换作图题也是小马哥 960 题系列里反复出现的一种题型。这篇文章不打算只给一个题目的答案而是要把这类题背后的通用解法讲透。我的核心判断是波形变换题真正考的不是“口诀记没记住”而是“自变量替换”这个本质有没有理解。只要掌握了代入法和关键点跟踪法再复杂的复合变换也能稳定地画对。读完这篇文章你能独立解决这一类“反转尺度平移”组合的作图题并且知道怎么用代码验证自己的结果。1. 这类题到底在考什么很多同学拿到复合变换题时第一反应是套“左加右减、伸缩反转”的口诀。这个思路本身没错但口诀只适合单一变换一旦遇到f(2-2t)、f(1-3t)这样的复合表达式口诀就失效了。因为你无法直观看出“到底该左移多少、右移多少先反转还是先压缩”。从考研命题的角度看这类题考查的是两个能力第一是否理解自变量替换的本质。波形图本质上是横轴坐标t与函数值f(·)的对应关系。变换f(t) → f(2-2t)改变的只是自变量进去的方式并没有改变函数本身的形状。你能不能在新的横轴上重新建立对应关系是解题的关键。第二是否具备稳定的作图流程。考场上的波形作图题时间紧、草稿纸空间有限如果你每次都是凭感觉画那么同样的题换一个系数、换一个方向就可能出错。真正稳定的做法是有一套可重复执行的步骤——要么用关键点跟踪要么用代入法让每一步都有依据。还有一个容易被忽略的考点题目往往不会单独考一种变换而是把尺度、时移、反转揉在一起考查你对三种基本变换的综合运用能力。像 2024 年成都信息工程大学 2.1 这道题表面上是作图实际上是考查你能否把一个复合映射拆解成基本变换的乘积和组合。因此这篇文章给出的方法体系不是某个题目的“专属解法”而是一套可以迁移到所有复合变换作图题的通用流程。你只需要记住看到复合表达式先不要急着想“先平移还是先尺度”而是先判断用哪种方法。2. 三种基本变换的定义与波形变化规律在讲综合方法之前先把三种基本变换的定义和波形规律理清楚。很多同学并不是不懂这三个概念而是在组合时忘记“每一步变换都是直接作用于自变量t的”所以这里重新建立一个统一的认知框架。2.1 尺度变换 f(at)把f(t)变成f(at)其中a 0波形在横轴方向上会压缩或扩展。当a 1时波形被压缩。比如f(2t)原来波形上所有点的横坐标都除以 2。当0 a 1时波形被扩展。比如f(0.5t)原来波形上所有点的横坐标都乘以 2。记忆要点是波形横向变化的倍数是1/a不是a。特别要注意a只改变波形的宽度不改变函数值的范围。2.2 时移变换 f(t - t0)把f(t)变成f(t - t0)波形在横轴方向整体平移。当t0 0时f(t - t0)是f(t)向右平移t0。当t0 0时f(t |t0|)是f(t)向左平移|t0|。这里有一个高频误点“左加右减”这几个字实际指代的是“t减去一个正数波形右移”。如果你代入一个具体的点会更清楚原波形在t 1处有值那么f(t - 1)需要在t 2处才能取到同样的值所以波形向右移动了 1 个单位。2.3 反转变换 f(-t)把f(t)变成f(-t)波形关于纵轴做镜像翻转。原来在t a处的值会移动到t -a处。这个变换单独出现时不难但和尺度、平移组合在一起时方向容易搞反。三种基本变换的对比可以看下面的表格变换类型表达式波形变化记忆要点尺度变换f(at)a 1压缩 1/a 倍压缩倍数与 a 成反比尺度变换f(at)0 a 1扩展 1/a 倍波形变宽函数值不变时移变换f(t - t0)t0 0右移 t0减正数波形右移时移变换f(t t0)t0 0左移 t0加正数波形左移反转变换f(-t)关于纵轴镜像坐标取相反数需要特别强调的是以上三种变换中时移的“左右移动”是初学者最容易混淆的。很多同学会把f(2 - t)误读成“左移 2 个单位”这是不对的。正确的读法是先把2 - t写成-(t - 2)即f(2 - t) f(-(t - 2))它包含反转和右移两步而不是单纯的一次平移。这种“先提取负号再判断平移方向”的习惯是解决复合变换的关键。3. 核心方法一关键点跟踪法关键点跟踪法是我最推荐考场使用的方法。它的核心思想是波形由若干关键点决定只要把关键点在变换前后的位置找出来连起来就是变换后的波形。3.1 为什么关键点能决定波形任何一个分段连续的信号都可以看作由端点、折点、间断点连接而成。对这些特殊点做同样的自变量变换它们在横轴上的位置会发生变化但它们的函数值不会变。因此把这些点的新坐标求出来再按照原来的相对顺序连接就能得到变换后的波形。这很像地图缩放你不需要把地图上每一个建筑物都重新定位只需要找到几个标志性建筑的新位置就能大致重构整张地图的形状。3.2 操作步骤第一步列出原始信号的所有关键点包括信号起点和终点分段点、折点峰值点、谷值点间断点。第二步写出变换关系。如果要画f(φ(t))而原始信号的关键点是t t_k那么令φ(t) t_k解出t。这个t就是“新的横坐标”。第三步把每个关键点的横坐标和对应的函数值写成一张对应表旧横坐标t_k→ 新横坐标t函数值f(t_k)保持不变。第四步在新坐标轴上按顺序标出这些点并用直线或曲线连接。3.3 方法优势与适用范围关键点跟踪法的优势是直观、每一步都有明确依据而且不容易在“先平移还是先尺度”的顺序上犯错。只要你解方程不出错结果就一定是正确的。它特别适合分段线性信号比如矩形、三角波、梯形波等考研常见信号。当然它也有局限性如果原始信号是一个复杂的非线性连续函数关键点可能无法完全描述波形这时候需要使用代入法或者结合函数表达式来作图。但考研初试阶段绝大多数作图题给出的都是分段直线信号因此关键点跟踪法的适用范围非常广。4. 核心方法二代入法代入法是从函数表达式的角度直接求解变换后的波形适合那些需要精确写出变换后函数解析式的题目。它的本质是变换后的y(t)等于把t替换成某种形式后的f(·)。4.1 操作步骤第一步明确目标函数。假设要求画出y(t) f(2 - 2t)。第二步把y(t)看成是原始信号f(τ)在τ 2 - 2t处的取值。第三步用分段表达式代入。如果原始信号在不同的τ区间有不同的表达式那么将τ 2 - 2t分别代入各个区间的不等式解出t的新区间同时把表达式中的τ替换为2 - 2t得到y(t)在各新区间上的解析式。第四步根据解析式画出波形。4.2 一个直观的理解代入法本质上就是“查表”。原始信号f(τ)就是一张表告诉你每个τ对应什么函数值。变换后的y(t)做的事情是给定一个t先算出τ 2 - 2t再去查f(τ)这张表把查到的值作为y(t)的输出。因此原始信号的形状不会变变的只是横轴的映射方式。4.3 代入法与关键点跟踪法的比较比较维度关键点跟踪法代入法核心操作找关键点解方程映射坐标代入表达式解不等式区间直观程度高适合快速作图稍抽象但能得到精确解析式适合信号分段线性信号各类信号包括复杂函数出错风险关键点漏掉会出错不等式方向容易算错考场推荐度极高高两种方法并不是对立的。实际解题时我习惯先用关键点跟踪法快速确定波形的大致形状再用代入法验证个别区间的表达式是否正确。两者互为补充能极大降低出错率。5. 典型例题完整推导以成都信息工程大学同类题为例下面用一道典型的复合变换作图题来完整演示上述方法。由于真题原图不方便直接给出我们采用一道与 2024 年成都信息工程大学 2.1 题同类型的题目来讲解方法完全一致可以直接迁移到真题上。题目已知信号f(t)的波形为分段三角波表达式如下f(t) (t 2) / 2, -2 ≤ t ≤ 0 f(t) 1 - t, 0 t ≤ 1 f(t) 0, 其他请画出y(t) f(2 - 2t)的波形。这个信号的特点是峰值在t 0左侧从(-2, 0)上升到(0, 1)右侧从(0, 1)下降到(1, 0)是一个左右不对称的三角形。用它作为例子能清楚看到反转对左、右斜坡的影响。5.1 用关键点跟踪法求解第一步列出原始信号的关键点左端点t -2f 0峰值点t 0f 1右端点t 1f 0第二步写出映射关系。因为y(t) f(2 - 2t)所以令τ 2 - 2t则关键点的原始横坐标τ -2, 0, 1分别对应新的横坐标τ -2 → 2 - 2t -2 → t 2 τ 0 → 2 - 2t 0 → t 1 τ 1 → 2 - 2t 1 → t 0.5第三步建立对应表原始信号关键点原始横坐标 τ新横坐标 t函数值左端点-220峰值点011右端点10.50第四步连接关键点。新波形在t 0.5处函数值为 0在t 1处达到峰值 1在t 2处又回到 0。由于原始信号是分段直线变换后的波形也是分段直线所以直接连接这三点即可。得到的结果是在区间[0.5, 1]上y(t)从 0 线性上升到 1在区间[1, 2]上y(t)从 1 线性下降到 0。也就是说变换后的峰值依旧在中间偏左的位置但左侧斜坡变短了右侧斜坡变长了。5.2 用代入法验证代入法的目标是求出变换后波形的精确解析式。原始信号的三个区间分别是区间1τ ∈ [-2, 0]f(τ) (τ 2) / 2 区间2τ ∈ (0, 1]f(τ) 1 - τ 区间3其他f(τ) 0令τ 2 - 2t依次代入三个区间。区间1-2 ≤ τ ≤ 0即-2 ≤ 2 - 2t ≤ 0。解不等式-2 ≤ 2 - 2t → -4 ≤ -2t → 2 ≥ t 2 - 2t ≤ 0 → -2t ≤ -2 → t ≥ 1所以t ∈ [1, 2]。此时y(t) (2 - 2t 2) / 2 (4 - 2t) / 2 2 - t也就是说在t ∈ [1, 2]上y(t) 2 - t从(1, 1)下降到(2, 0)。区间20 τ ≤ 1即0 2 - 2t ≤ 1。解不等式2 - 2t 0 → t 1 2 - 2t ≤ 1 → -2t ≤ -1 → t ≥ 0.5所以t ∈ [0.5, 1)。此时y(t) 1 - (2 - 2t) 2t - 1也就是说在t ∈ [0.5, 1]上y(t) 2t - 1从(0.5, 0)上升到(1, 1)。区间3其他区域y(t) 0。最终得到变换后的解析式y(t) 2t - 1, 0.5 ≤ t ≤ 1 y(t) 2 - t, 1 t ≤ 2 y(t) 0, 其他这与关键点跟踪法的结果完全一致。5.3 从分步操作的角度再理解如果还想从“基本变换的组合”角度来看可以把y(t) f(2 - 2t)写成f(2 - 2t) f(-2(t - 1))这等价于对f(t)依次做三步操作尺度变换f(t) → f(2t)波形压缩为原来的 1/2反转变换f(2t) → f(-2t)波形关于纵轴镜像时移变换f(-2t) → f(-2(t - 1))波形向右平移 1 个单位。注意第三部的平移量是 1不是 2。很多同学在看到f(2 - 2t)时会把“2”误判为左移 2 个单位就是因为没有先把-2提取出来。正确的做法是先把t的系数化为 1再看括号里是t - 1还是t 1从而判断平移方向和距离。6. 用 Python 验证波形变换结果作图题画完怎么确认自己画对了最直观的方法是写一小段 Python 代码把原始波形和变换后的波形画出来对比。这里用numpy和matplotlib做一个最小验证。6.1 环境准备只需要 Python 3.8 及以上版本并安装numpy和matplotlibpip install numpy matplotlib建议在 Jupyter Notebook 或任意 Python IDE 中运行方便直接显示图像。6.2 代码实现第一步定义原始信号f(t)和变换函数import numpy as np import matplotlib.pyplot as plt def f(t): 原始信号 f(t) t np.asarray(t, dtypefloat) y np.zeros_like(t) # 区间1[-2, 0]f(t) (t 2) / 2 mask1 (t -2) (t 0) y[mask1] (t[mask1] 2) / 2.0 # 区间2(0, 1]f(t) 1 - t mask2 (t 0) (t 1) y[mask2] 1.0 - t[mask2] return y def y_transform(t): 变换后的信号 y(t) f(2 - 2t) t np.asarray(t, dtypefloat) return f(2 - 2 * t)第二步绘制对比图# 生成横轴 t_orig np.linspace(-3, 3, 1000) t_comp np.linspace(-1, 3, 1000) # 绘制 fig, axes plt.subplots(2, 1, figsize(8, 6)) axes[0].plot(t_orig, f(t_orig), linewidth2, colorblue) axes[0].axhline(0, colorblack, linewidth0.5) axes[0].axvline(0, colorblack, linewidth0.5) axes[0].set_title(Original Signal f(t)) axes[0].grid(True, linestyle--, alpha0.6) axes[1].plot(t_comp, y_transform(t_comp), linewidth2, colorred) axes[1].axhline(0, colorblack, linewidth0.5) axes[1].axvline(0, colorblack, linewidth0.5) axes[1].set_title(Transformed Signal y(t) f(2 - 2t)) axes[1].grid(True, linestyle--, alpha0.6) plt.tight_layout() plt.show()第三步用关键点法得到的手绘解析式与直接代入法结果进行比较def y_manual(t): 根据推导得到的分段解析式 t np.asarray(t, dtypefloat) y np.zeros_like(t) # 区间1[0.5, 1]y(t) 2t - 1 mask1 (t 0.5) (t 1) y[mask1] 2 * t[mask1] - 1 # 区间2(1, 2]y(t) 2 - t mask2 (t 1) (t 2) y[mask2] 2 - t[mask2] return y # 对比误差 err np.max(np.abs(y_transform(t_comp) - y_manual(t_comp))) print(关键点法与代入法最大误差, err)运行结果会打印关键点法与代入法最大误差0.0或一个极小浮点数如1e-16量级说明两种方法得到的结果完全一致。6.3 如何判断验证成功判断标准很简单图形上第二个子图的波形应该是一个“左右不对称”的三角形峰值在t 1处左侧斜坡范围是[0.5, 1]右侧斜坡范围是[1, 2]数值上最大误差应该在1e-10以下原始信号的总宽度是 3变换后的总宽度是 1.5符合压缩 2 倍的预期。如果你的输出与预期不符优先检查f(t)定义里的区间边界是否包含等号以及映射时2 - 2t是否写成了2t - 2。这是两处最容易出现低级错误的地方。7. 高频易错点与排查方法波形变换综合题的出错点高度集中下面把最常见的几类问题列出来并给出排查思路。问题现象可能原因排查方式解决方案变换后波形方向反了反转时没有正确提取负号将f(2 - 2t)改写为f(-2(t - 1))先提取t的负系数再做平移判断平移距离不对看到2 - 2t里的2误判为左移代入一个特殊点验证如检查峰值移动将自变量系数化为 1 后再判断t - 1还是t 1波形宽度不对把压缩倍数2当成扩展倍数检查非零区间宽度是否变为原来的 1/2记住横向缩放倍数是 1/关键点漏掉波形形状出错只找了端点没找折点和峰值列出每个分段区间边界按“起点、折点、峰值、终点、间断点”逐项排除代入法解不等式方向反了解区间时没有同时考虑两边用区间内一个具体数值代入验证每个区间取一个测试点验证是否落在目标区间用代码验证时波形对不上函数定义区间等号写错检查f中的mask条件和手推解析式逐项对比统一区间边界写法建议使用“左闭右开”规则这里特别想强调一个隐蔽的坑在画f(2-2t)时许多同学会先画f(-t)再画f(-2t)然后直接左移 2 个单位理由是“括号里是 2”。实际上f(-2t)变成f(-2(t-1))时位移量为 1方向是向右。要避免这个坑可以在草稿纸上写一行f(2-2t) f(-2(t-1))并圈出(t-1)提醒自己这里对应的是右移 1。另一个高频错误是漏掉“非零区间之外”的零电平。有些同学把变换后的关键点连完就结束了忘记检查信号是否有非零区间。事实上尺度、反转、时移都不会改变信号的“零区间长度”只改变零区间的位置和宽度。每次作图完成后花 5 秒钟检查一遍非零区间是否连续、是否与原始信号的总区间长度对应能避免很大一部分丢分。8. 考场做题规范与复习建议最后这部分讲一讲怎么把前面的方法落实到考场上以及如何通过刻意练习提升正确率。8.1 做题步骤固定化建议每次遇到波形变换作图题都按下面的固定流程走第一步确定目标和表达式。把要求画的复合表达式写清楚例如y(t) f(2 - 2t)。第二步判断是否存在负号。如果t前系数为负先写一行等式f(2 - 2t) f(-2(t - 1))把反转方向理清。第三步提取关键点。在原始波形上把端点、折点、峰值点全部标出来。第四步代入映射关系逐一解新坐标。这一步建议用表格记录避免抄错。第五步连接关键点核对非零区间宽度。第六步有条件的话用特殊点代入检查。比如原始波形峰值在t 0那么变换后的峰值应该出现在使2 - 2t 0的位置即t 1。这个快速检验几乎不花时间但能挡住大多数错误。8.2 草稿纸上的标记习惯考场上草稿纸空间有限建议养成以下习惯每个关键点都用(旧坐标 → 新坐标)的形式写在旁边所有关键点的函数值保持不变这一点用箭头标注出来变换后的坐标轴上先画一个轻的十字坐标系再落点非零区间用阴影标记一眼就能看出波形位置。这些细节看起来简单但能显著减少“点找到了连线却画错”的失误。8.3 复习时如何训练小马哥 960 题系列里的波形变换题不少建议按照“先单一变换、再两两组合、最后三合一”的顺序刷题。单一变换训练的是口诀和基本动作两两组合训练的是“提取系数”和“平移方向”的判断三合一的综合题训练的是本文讲的关键点跟踪法和代入法的综合运用。如果你在做题时遇到某道题反复出错不要急着看答案而是用 Python 画图对比自己的手绘结果。很多时候代码跑出来的图形会直观地告诉你错在哪一步。这种“手算 代码验证”的学习方式比单纯刷题更有效率也能帮你形成对波形变换的直觉。8.4 推荐的最小验证模板训练阶段可以固定使用下面的模板来验证任意复合变换import numpy as np import matplotlib.pyplot as plt def f(t): # 这里替换成你手头的原始信号 t np.asarray(t, dtypefloat) return np.where((t -1) (t 1), 1 - np.abs(t), 0) def y(t): # 这里替换成题目要求的复合变换例如 f(2 - 2t)、f(1 - 3t) return f(2 - 2 * t) t np.linspace(-3, 3, 2000) plt.plot(t, f(t), labelf(t)) plt.plot(t, y(t), labely(t)) plt.legend() plt.grid(True) plt.show()把原始信号和变换函数替换成目标题目后运行即可看到两组波形。这个方法不仅能验证做题结果还能帮助你观察“波形到底向左还是向右移动了”“压缩后变宽还是变窄”等整体规律。9. 总结波形变换综合作图题核心不在“技巧”而在“理解”。尺度变换改变的是横轴缩放时移改变的是横轴位置反转改变的是横轴方向三者统一在“自变量替换”这一个原理下。只要你掌握了关键点跟踪法和代入法绝大多数复合变换都能在几分钟内准确画出。对 2024 年成都信息工程大学 2.1 这类真题我的建议是考场上一眼看出表达式里是否含负号先提取系数再用关键点法快速作图最后用特殊点代入验证。这样的流程虽然看起来多做了一步但实际上比“凭感觉画”更省时间、更稳。如果你正在刷小马哥 960 题或其他信号习题集不要满足于“把答案画对”建议每道题都用 Python 画一遍观察脉冲位置、宽度、方向的变化规律。练多了你会发现这类题从“易错题”变成了“送分题”。建议收藏这篇文章做题前翻一遍尤其是“高频易错点”那张表能帮你省下不少纠错时间。
返回列表