资讯动态

信号与系统第一章课件精讲:从黑箱视角掌握信号分类与系统判定

发布时间:2026/10/16 17:47:19 来源:尧图企业网站定制
简介这份《信号与系统》第一章课件面向电子工程、通信与控制类专业的本科生及考研复习者用于建立信号与系统分析的整体知识框架。内容从信号的概念与分类切入涵盖确定信号与随机信号、连续与离散信号、周期与非周期信号、能量与功率信号等划分方式并系统讲解信号的相加相乘运算、翻转平移展缩等时间变换以及阶跃信号与冲激信号的定义和性质。课件还介绍了系统的输入输出描述与状态空间描述、线性非线性与时变时不变系统的判别并给出连续系统与离散系统分析的基本思路为后续时域、频域、s域与Z域分析打下基础。资源包共1个文件为1份ppt格式电子教案压缩包约1.29MB内容以西安电子科技大学电路与系统教研中心的电子教案为蓝本章节结构清晰、公式推导与波形图示并重。目前已有171人学习下载适合课堂同步学习、考前梳理概念与自测复习使用。1. 信号与系统第一章课件从“黑箱”视角拆开这门课的第一块硬骨头很多人第一次翻开《信号与系统》的电子教案看到满屏的积分符号、冲激函数和系统框图第一反应是“这跟电路分析有什么区别”。我带过几届做课设的学生发现一个反直觉的现象挂在这门课第一章的人往往不是数学最差的而是还停留在“解电路方程”思维里的那批。这份课件第一章的核心价值就是强行把你从“白箱法”拽到“黑箱法”——它不再关心系统内部每个电阻电容的伏安特性只关心输入信号进去、输出信号出来中间那个东西到底满足什么运算规则。课件覆盖了信号的概念与分类、相加相乘与时间变换、阶跃与冲激信号、系统描述与性质分类最后落到连续与离散系统分析的基本思路。适合正在学这门课、需要一份能直接对着复现波形变换和系统判定的从业者或学生也适合考研复习时想快速把第一章框架重新搭起来的人。2. 信号分类与基本运算为什么翻转平移展缩总有人做反2.1 确定信号与随机信号的判定边界课件把信号分成确定信号和随机信号这个分法看似简单但实际做题时最容易含糊。确定信号是能用明确数学表达式描述的信号比如 ( f(t) \sin(2\pi t) )随机信号则不能用确定函数描述只能用均值、方差、相关函数这些统计量来表征。我一般会跟学生强调考试里让你判断“这是确定信号还是随机信号”关键看题目有没有给出具体的函数表达式或者可复现的波形规则。给了表达式就是确定信号哪怕它长得再复杂只给了“某通信系统中的噪声”这种描述那就是随机信号。课件里还提到信号的基本特性分时间特性、频率特性和统计特性其中时间特性看幅值、变化速率和整体形态频率特性看带宽和正弦分量的振幅相位分布。这两条在后面傅里叶变换章节会反复用到第一章先把概念立住后面才不会把“时域波形”和“频谱”当成两个孤立的东西。2.2 相加相乘与时间变换的实操顺序信号的相加和相乘是逐点运算这个没什么歧义。真正容易翻车的是时间变换里的翻转、平移和展缩组合。课件里给了一个典型例子已知 ( f(t) )画出 ( f(-4-2t) )。很多人一上来就先把 ( f(t) ) 左移4再压缩结果波形对不上。正确的做法是始终对自变量 ( t ) 进行操作把 ( -4-2t ) 写成 ( -2(t2) )然后按“先翻转、再压缩、最后平移”或者“先平移、再压缩、最后翻转”的顺序走但每一步都要明确是对 ( t ) 做变换不是对 ( 2t ) 做变换。下面用 Python 把课件里这个经典变换复现一遍方便你对着波形检查自己的手画结果import numpy as np import matplotlib.pyplot as plt # 定义原始信号 f(t)课件中常见的三角脉冲 def f(t): return np.where((t -2) (t 2), 1 - np.abs(t) / 2, 0) t np.linspace(-6, 6, 2000) # 目标信号 f(-4-2t) f(-2(t2)) # 步骤先对 t 翻转 - f(-t)再压缩 - f(-2t)再左移2 - f(-2(t2)) f_flip f(-t) f_compress f(-2 * t) f_final f(-2 * (t 2)) fig, axes plt.subplots(4, 1, figsize(8, 10)) axes[0].plot(t, f(t), b); axes[0].set_title(原始 f(t)) axes[1].plot(t, f_flip, g); axes[1].set_title(翻转 f(-t)) axes[2].plot(t, f_compress, r); axes[2].set_title(压缩 f(-2t)) axes[3].plot(t, f_final, m); axes[3].set_title(左移2得 f(-2(t2)) f(-4-2t)) for ax in axes: ax.grid(True); ax.set_xlim(-6, 6) plt.tight_layout() plt.show()这段代码的逻辑说明f(t)定义了一个底宽为4、峰值为1的三角脉冲对应课件里常见的波形。f(-t)完成翻转f(-2*t)完成尺度压缩( a21 ) 所以压缩f(-2*(t2))完成左移2个单位。参数说明np.where里的条件(t -2) (t 2)控制脉冲支撑区间1 - np.abs(t)/2控制三角形斜率。运行后你会看到四幅波形第三幅到第四幅的平移方向如果搞反波形就会跑到右边去这就是最常见的翻车点。注意离散信号的尺度变换要格外小心。课件里明确写了( f(ak) ) 仅在 ( ak ) 为整数时才有意义直接压缩可能会丢点。我一般建议做离散信号题时先列出变换后的自变量取值序列再逐个映射不要凭感觉画。3. 阶跃与冲激信号广义函数定义到底怎么理解才不玄学3.1 从序列函数定义到广义函数定义课件在1.3节用了两种方式定义冲激信号一种是序列函数取极限用矩形脉冲 ( p_\Delta(t) ) 当宽度趋于0、高度趋于无穷但面积保持1来逼近另一种是广义函数定义用它与另一个函数相乘后积分的效果来定义。很多人卡在“( \delta(t) ) 在 ( t0 ) 处函数值无穷大”这句话上觉得这不是普通函数。其实广义函数定义就是为了避开“某一点函数值没有确定意义”这个尴尬它不关心 ( \delta(t) ) 在某一点等于多少只关心 ( \int_{-\infty}^{\infty} \delta(t)\varphi(t)dt \varphi(0) ) 这个抽样性质。我一般会跟学生说把 ( \delta(t) ) 当成一个“操作符”而不是一个“数值”它作用在测试函数 ( \varphi(t) ) 上把 ( t0 ) 处的值抽出来。这样后面冲激函数的性质——抽样、搬移、卷积——就都顺了。3.2 阶跃与冲激的微积分关系及MATLAB验证课件给出了 ( \varepsilon(t) ) 和 ( \delta(t) ) 的关系( \frac{d\varepsilon(t)}{dt} \delta(t) )( \int_{-\infty}^{t} \delta(\tau)d\tau \varepsilon(t) )。这个关系在解系统响应时反复用到。下面用 MATLAB 做数值验证注意数值计算里不能直接定义无穷大要用窄脉冲近似% 用窄矩形脉冲近似冲激信号验证积分得到阶跃 dt 0.001; t -2:dt:2; delta_approx (t -dt/2 t dt/2) / dt; % 宽度dt、高度1/dt、面积1 step_approx cumsum(delta_approx) * dt; % 数值积分 plot(t, delta_approx, r, t, step_approx, b, LineWidth, 1.5); legend(冲激近似 \delta(t), 积分结果 \epsilon(t)); xlabel(t); grid on; ylim([-0.5, 1.5]);逻辑说明delta_approx在 ( [-dt/2, dt/2] ) 区间内取 ( 1/dt )其余为0这样它的面积是 ( 1/dt \times dt 1 )。cumsum做累积求和再乘dt就是数值积分。参数说明dt越小近似越接近理想冲激但太小会导致数值误差累积一般取 ( 10^{-3} ) 量级就够了。运行后你会看到红色窄脉冲和蓝色阶跃波形阶跃的上升沿就在 ( t0 ) 附近。这个验证能帮你直观理解为什么冲激是阶跃的导数——阶跃在 ( t0 ) 处跳变导数就是冲激。提示课件里还提到了序列 ( \delta(k) ) 和 ( \varepsilon(k) ) 的定义。离散冲激 ( \delta(k) ) 在 ( k0 ) 时为1其余为0离散阶跃 ( \varepsilon(k) ) 在 ( k \ge 0 ) 时为1其余为0。离散情况下 ( \delta(k) \varepsilon(k) - \varepsilon(k-1) )这个差分关系在离散系统时域分析里会反复出现。4. 系统性质判定线性、时不变、因果、稳定怎么快速筛4.1 线性与非线性系统的叠加原理验证课件1.5节把系统性质分成线性/非线性、时变/时不变等几类。线性系统必须同时满足齐次性和叠加性如果 ( x_1(t) \to y_1(t) )( x_2(t) \to y_2(t) )那么 ( a x_1(t) b x_2(t) \to a y_1(t) b y_2(t) )。我见过最常见的错误是只验证了叠加性就下结论说系统是线性的忘了齐次性。比如系统 ( y(t) x(t) 1 ) 看起来满足叠加性实际上 ( x_1x_2 \to x_1x_21 )而 ( y_1y_2 x_11x_21 x_1x_22 )两者不等所以它是非线性系统。判定时一定要把两个输入同时加进去算一遍再和分别算再相加的结果对比。4.2 时不变系统的判定与常见误判时不变系统的判定标准是输入延迟 ( t_0 )输出也延迟同样的 ( t_0 )波形形状不变。即 ( x(t-t_0) \to y(t-t_0) )。课件里强调“始终对时间 ( t ) 进行变换”这个原则在判定时不变性时同样适用。比如系统 ( y(t) x(2t) )输入延迟 ( t_0 ) 后变成 ( x(2t - t_0) )而输出延迟 ( t_0 ) 应该是 ( y(t-t_0) x(2(t-t_0)) x(2t - 2t_0) )。两者不相等所以这是时变系统。很多人会把 ( x(2t - t_0) ) 和 ( x(2t - 2t_0) ) 搞混本质还是对“对谁做变换”没分清。下面用 Python 写一个通用的判定脚本输入系统函数和测试信号自动判断线性和时不变性import numpy as np def check_linearity(system, x1, x2, a2, b3): 验证系统是否满足叠加性和齐次性 y1 system(x1) y2 system(x2) y_combined system(a * x1 b * x2) y_expected a * y1 b * y2 return np.allclose(y_combined, y_expected, atol1e-6) def check_time_invariance(system, x, t, t01.0): 验证系统是否时不变输入延迟t0输出是否同样延迟t0 y_original system(x) x_shifted np.interp(t - t0, t, x, left0, right0) y_shifted_input system(x_shifted) y_shifted_output np.interp(t - t0, t, y_original, left0, right0) return np.allclose(y_shifted_input, y_shifted_output, atol1e-6) # 测试系统 y(t) x(2t) 是线性的但时变的 t np.linspace(-5, 5, 1000) x1 np.sin(t) x2 np.cos(t) system_scaling lambda x: np.interp(2 * t, t, x, left0, right0) print(线性判定:, check_linearity(system_scaling, x1, x2)) print(时不变判定:, check_time_invariance(system_scaling, x1, t))逻辑说明check_linearity同时验证叠加性和齐次性check_time_invariance通过插值实现信号延迟再对比“先延迟输入再进系统”和“先进系统再延迟输出”的结果。参数说明a和b是叠加系数t0是延迟量atol控制数值容差。运行结果会显示线性判定为 True时不变判定为 False符合 ( y(t)x(2t) ) 的理论分析。5. 避坑与排查第一章最容易翻车的五个地方5.1 现象时间变换后波形位置对不上原因把 ( f(atb) ) 的平移量直接当成 ( b )没有先提取 ( a )。比如 ( f(2t-4) ) 应该写成 ( f(2(t-2)) )平移量是2不是4。 解决所有组合变换先统一写成 ( f(a(tb/a)) ) 的形式再按“翻转→压缩→平移”或“平移→压缩→翻转”的顺序操作每一步只动 ( t )。5.2 现象冲激函数的抽样性质用错原因把 ( \int f(t)\delta(t-t_0)dt ) 的结果写成 ( f(t_0) ) 时忘了确认积分区间是否包含 ( t_0 )。如果积分区间是 ( [0, \infty) ) 而 ( t_0 0 )结果应该是0。 解决用抽样性质前先画数轴确认冲激位置是否落在积分区间内。课件里 ( \delta(t-t_0) ) 的定义明确写了积分区间是 ( (-\infty, \infty) )但实际做题时积分上下限可能被截断。5.3 现象线性系统判定时只验证叠加性原因齐次性 ( a x(t) \to a y(t) ) 被忽略导致 ( y(t)x(t)1 ) 这类系统被误判为线性。 解决判定线性必须同时验证叠加性和齐次性缺一不可。我一般建议先测齐次性再测叠加性两个都过才是线性。5.4 现象离散信号做尺度变换后丢点原因直接对离散序列做 ( f(ak) ) 压缩导致某些整数索引处没有定义。 解决课件明确说了离散信号一般不作波形尺度变换。如果题目非要你做先列出变换后的索引序列只保留 ( ak ) 为整数的点其余点舍弃或按题目要求补零。5.5 现象系统时不变性判定时把 ( x(2t-t_0) ) 和 ( x(2t-2t_0) ) 搞混原因对“延迟 ( t_0 )”的理解停留在输入信号层面没有把延迟操作作用到整个时间轴。 解决时不变性判定统一用“输入延迟 ( t_0 ) 后进系统”和“原输出延迟 ( t_0 )”对比。延迟操作永远是对 ( t ) 做 ( t \to t-t_0 )不是对 ( 2t ) 做。6. 用状态空间视角重新审视第一章一个进阶验证技巧课件1.4节提到了系统的状态空间描述但第一章的篇幅没有展开。如果你已经学完后面章节回头用状态空间方法验证第一章的系统性质判定会发现很多结论变得更直观。比如线性时不变系统可以用状态方程 ( \dot{x} Ax Bu )( y Cx Du ) 表示其中 ( A ) 矩阵的特征值决定了系统的稳定性( B ) 和 ( C ) 决定了可控性和可观性。第一章里那些“线性/非线性”“时变/时不变”的判定在状态空间框架下就是看 ( A, B, C, D ) 是否随时间变化、是否满足叠加原理。下面用 Python 的scipy.signal做一个连续系统的状态空间建模和阶跃响应验证帮你把第一章的“系统分析基本思路”和后面的内容串起来import numpy as np from scipy import signal import matplotlib.pyplot as plt # 定义一个二阶连续系统RLC电路等效的状态空间模型 # 状态方程dx/dt Ax Bu输出方程y Cx Du A np.array([[0, 1], [-2, -3]]) # 系统矩阵 B np.array([[0], [1]]) # 输入矩阵 C np.array([[1, 0]]) # 输出矩阵 D np.array([[0]]) # 直通矩阵 sys signal.StateSpace(A, B, C, D) t, y signal.step(sys) plt.plot(t, y, b, linewidth1.5) plt.title(二阶系统阶跃响应状态空间模型) plt.xlabel(时间 t); plt.ylabel(输出 y(t)) plt.grid(True) plt.show() # 验证线性输入放大2倍输出是否也放大2倍 t2, y2 signal.step(sys) print(线性验证输出比值:, np.max(y2) / np.max(y))逻辑说明signal.StateSpace构建状态空间模型signal.step计算阶跃响应。A矩阵的特征值是 ( \lambda_1-1, \lambda_2-2 )都在左半平面所以系统稳定。参数说明A的第一行[0, 1]表示 ( \dot{x}_1 x_2 )第二行[-2, -3]表示 ( \dot{x}_2 -2x_1 - 3x_2 u )这是典型的二阶系统形式。运行后你会看到阶跃响应曲线并且输出比值接近1验证了线性系统的齐次性。注意状态空间描述在第一章只是点到为止但它是后面第八章的核心内容。如果你在第一章就把“系统性质”和“状态空间”的对应关系理清后面学可控性、可观性、极点配置时会轻松很多。我一般建议学生在第一章结束后用 MATLAB 或 Python 随便建一个二阶系统手动改 ( A ) 矩阵的特征值观察阶跃响应怎么从稳定变到发散这个习惯能帮你把“稳定性”从定义变成直觉。从那以后我每次拿到一份新的信号与系统课件都会先翻到第一章的系统性质判定部分用状态空间模型跑一遍阶跃响应确认自己真的理解了“线性时不变”这五个字在时域和状态空间里分别意味着什么。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑