资讯动态

从卷积到采样定理:MIT信号与系统课程自学指南

发布时间:2026/8/31 6:10:56 来源:尧图企业网站定制
有一门课很多工程师是在踩坑之后才回头补的做音频降噪时发现看不懂频谱做通信基带时发现卷积绕不过去做控制系统时发现Z变换躲不开。这门课就是“信号与系统”。本科阶段它被不少学生当成数学考试来应付工作之后才意识到它才是把模拟世界和数字算法连接起来的桥梁。在众多公开课资源里MIT麻省理工学院的 RES.6.007 Signals and Systems, 1987 是一个绕不开的存在。主讲人是Alan V. Oppenheim课程录制于1987年但至今仍然被全球自学者当作标准入门材料。很多人第一次听到这个年份会觉得“太老了”真正听几讲之后才会明白这门课的含金量不在于新而在于它把抽象概念讲得极其清楚。它解决的不是“这个公式怎么推”而是“这个公式到底在描述什么现象”。如果只允许推荐一份信号与系统学习材料我会把这份课程放在第一位。这篇文章会围绕三个问题展开第一RES.6.007 这门课到底覆盖了什么它的教学优势在哪里第二自学时如何搭配教材、作业和动手实验避免“听懂但不会做题”第三怎么用 Python 把卷积、傅里叶变换、采样定理这些核心概念真正跑一遍。看完之后你应该能看清自己的学习路径而不是继续在收藏夹里吃灰。1. 为什么现在还要学一门1987年的课信号与系统涉及的知识体系非常稳定因为它解决的是“如何用数学语言描述并处理信号”这一根本问题。视频编码会用到变换雷达信号处理会用到滤波语音识别的前端特征提取也要用到频谱分析。近些年深度学习的很多做法看起来和传统信号处理不同但底层仍然逃不开采样、滤波、频率分析这些基础操作。正因如此1987年的课程到今天并不过时过时的只是录像画质不是思维方式。这门课的价值主要来自 Oppenheim 的教学风格。他非常擅长先建立直觉再给出数学定义。比如讲傅里叶变换时他不会一上来就写公式而是先说明“复指数信号是线性时不变系统的特征函数”因为特征向量这个直觉一旦建立后面理解和记忆变换公式就会顺很多。这种“先直觉、后推导”的方式恰好是很多自学者的痛点。很多人看到傅里叶变换就是抄公式知道怎么算却不知道为什么要这么算结果换个场景就不会用。另一个值得学的原因是它提供了信号与系统知识体系的完整骨架。从连续时间信号到离散时间信号从时域分析到频域分析从傅里叶变换到拉普拉斯变换再到Z变换整条知识链是贯通的。今天的很多课程或文章会把其中某个知识点单独拿出来讲虽然内容不差但缺少整体框架。单独学“卷积”和单独学“滤波器设计”不是一回事一旦你要把两者连起来用就会意识到框架有多重要。这门课的定位不是“科普视频”也不是“刷题课”。它更接近大学课堂实录需要你跟着思考、做笔记、做作业。如果你带着“看完就会”的心态来会很失望如果你愿意一边暂停一边推导收获会非常大。2. RES.6.007 到底是一门什么样的课2.1 课程基本信息RES.6.007 是 MIT OpenCourseWareOCW上的公开课程资源以视频讲座为核心。课程名称为 Signals and Systems主讲人 Alan V. Oppenheim 是麻省理工学院电气工程与计算机科学系教授也是信号处理领域最重要的学者之一。很多人在学习《信号与系统》教材时封面上就印着他的名字。课程录像距今已经有三十多年画面是典型的“录像带质感”但这并不影响内容质量甚至很多学生反馈因为画面干扰很少反而更容易把注意力放在黑板的推导演算上。从课程设计看它是一套完整的本科生课程不是简短的科普短视频。整个课程包含大约二十多讲每讲都对应一个主题前后衔接非常紧密。如果你只看其中一两讲会觉得很零散如果按顺序完整跟下来会发现它其实构建了一条从时域到频域、从模拟到数字的完整学习路径。OCW 页面除了视频还提供了讲义、作业和考试题目这对自学者是非常完整的闭环。2.2 教材与课程搭配这门课对应的教材是 Oppenheim、Willsky 和 Nawab 合著的《Signals and Systems》信号与系统。书的英文第二版在1996年前后出版中文版在国内也流传很广。课程视频的年份比这个版本早但内容框架和书籍基本一致所以可以放心搭配使用。建议的学习方式是先看视频建立直觉再回到教材看对应章节的严格推导最后用作业题和实验来巩固理解。三件事缺一不可。很多自学者会犯一个错误只看视频不看书或者只看书不看视频。如果只看视频遇到需要大量推理的章节往往觉得“听懂了”但不会解题如果只看书又会因为符号和公式太多而丧失学习动力。视频和教材其实是互补的视频负责解释“为什么”教材负责给出精确的“是什么”和“怎么算”。在学傅里叶变换性质时这个感受会尤其明显。3. 课程核心概念拆解整体知识可以分成五大块信号与系统的基本概念、LTI系统与卷积、傅里叶级数与傅里叶变换、拉普拉斯变换与Z变换、采样与调制。下面逐一拆解。3.1 信号与系统的基本分类课程先从信号本身开始。连续时间信号写作 x(t)离散时间信号写作 x[n]。很多初学者觉得这只是符号不同实际上后面的数学工具完全分叉连续时间用微分方程和傅里叶变换离散时间用差分方程和Z变换。信号还可以分为周期信号和非周期信号、能量信号和功率信号这些分类决定了应该用哪种分析方法。系统则根据性质分为线性系统、时不变系统、因果系统、稳定系统等其中最重要的是线性时不变系统也就是 LTI 系统。这个概念是整个课程的地基后面所有内容几乎都在围绕 LTI 系统展开。3.2 LTI系统与卷积LTI 系统的核心结论是系统对任意输入的响应等于输入信号和系统冲激响应的卷积。这个结论之所以重要是因为它把一个“黑盒系统”变成了可以计算的操作。只要知道系统的冲激响应 h(t) 或 h[n]就能计算任意输入下的输出。课程会用大量直观例子说明卷积信号的延迟、叠加、尺度变化每一步都对应物理意义。这里真正容易踩坑的地方在于初学者经常把卷积的“数学符号”和“系统行为”搞混。卷积不是一个单纯的计算操作它在描述一个过程输入信号在过去每个时间点对当前输出产生影响影响大小由冲激响应决定。3.3 傅里叶级数与傅里叶变换傅里叶级数把周期信号分解成不同频率的正弦分量的叠加傅里叶变换把这种分解推广到非周期信号。课程最漂亮的地方在于用特征函数的角度解释它复指数信号 e^(jωt) 经过 LTI 系统后仍然保持同一个频率只是幅度和相位发生变化。因此把一个信号分解成复指数分量的叠加就能分别分析每个分量经过系统的响应再把结果叠加起来。这就是为什么频域分析如此有效。很多人在这一节会感到难度上升因为需要同时处理复数、积分、收敛性等问题。建议配合教材中的傅里叶变换性质表一起学习先把移位、卷积、调制这几个性质搞熟再研究具体的变换计算。3.4 拉普拉斯变换与Z变换傅里叶变换是分析稳定信号的利器但很多实际系统并不是绝对可积的这时候拉普拉斯变换和Z变换就派上用场。拉普拉斯变换把频域从虚轴扩展到了整个复平面Z变换则是拉普拉斯变换在离散时间下的对应形式。两者不仅能分析系统的频率响应还能直接判断系统的稳定性连续系统看极点是否在左半平面离散系统看极点是否在单位圆内。课程会强调它们不是两个孤立的新概念而是傅里叶变换的推广。把这个关系理清楚就很容易把连续和离散的知识统合在一起。3.5 采样定理采样定理是连接模拟世界和数字世界的桥梁。它说明一个带限信号只要采样率高于信号最高频率的两倍就能从离散样本中无失真地重建原信号。这个“最高频率的两倍”就是奈奎斯特率。课堂上会用大量波形图说明如果采样率不够高频信号会伪装成低频信号这就是混叠。混叠是实际工程中最常见也最隐蔽的问题之一因为它在时域上看不出来只有通过频谱分析才能发现。课程在这个地方会把傅里叶变换、卷积和系统分析几个知识串联起来是整个课程的高潮部分。4. 为什么信号与系统是工程师的共同底层语言如果把计算机科学和电气工程交叉起来看信号与系统几乎出现在所有和“物理世界交互”的场景里。音频采集和播放本质是振动信号经过麦克风、ADC、DSP和扬声器的系统链路图像处理中的边缘检测可以理解为二维卷积滤波通信系统里的调制解调就是信号在频域上的搬移。甚至连现代机器学习里常见的卷积神经网络名字里的“卷积”也从这里来只不过通过训练学习到的是数据拟合的卷积核而不是手工设计的滤波器。对于后端工程师或算法工程师来说学习信号与系统的收益同样直接。做音视频服务时要理解重采样、降噪、增益控制做传感器数据分析时要处理噪声和高频干扰做实时控制时要理解系统的稳定性和延迟。这些场景并不会直接考你卷积公式但如果你没有频域直觉遇到问题时会非常被动。另一个容易忽略的价值是工程沟通。不同方向的工程师交流时如果都懂“频率响应”“带宽”“滤波”这些概念很多问题几句话就能对齐。相反如果一个团队里没人懂基础信号理论遇到噪声和失真问题就会反复试错成本极高。这也是为什么很多资深工程师会对新人说信号与系统这门课越早补越好。5. 学习前的数学与工具准备5.1 数学基础学习这门课不需要太高深的数学但以下基础必须扎实微积分中的积分、导数、级数线性代数中的向量、矩阵、特征值概念复变函数中的复数运算、欧拉公式。课程里最常用的工具是欧拉公式 e^(jθ) cosθ j sinθ它把三角函数和复指数统一起来几乎每一章都会用到。如果大学阶段学过这些内容直接开始没问题如果已经忘得差不多建议先花两周把复数运算和基本微积分复习一遍否则很容易卡在数学符号上没精力理解物理意义。不需要先学完随机过程也不需要先懂数字信号处理。信号与系统是基础课它本身就是后续课的前置课程。保持“先掌握核心再处理边缘细节”的心态就好。遇到和卷积相关的积分计算时先不要急着刷大量积分题先用几道典型题把“信号翻转、平移、相乘、积分”这个流程走通后面自然熟练。5.2 软件环境推荐使用 Python 作为实验工具因为它免费、社区成熟并且可以快速完成信号可视化。只需要安装 NumPy、SciPy 和 Matplotlib就能覆盖课程大部分实验需求。MATLAB 在信号处理领域也很常见但商业授权对部分自学者有门槛。如果你已经有 MATLAB 环境用它也可以但本文后面的代码使用 Python 演示。运行环境建议 Python 3.9 或更高版本相关库版本以实际安装为准。创建一个虚拟环境来管理依赖会更稳妥。在命令行执行以下命令安装所需库pip install numpy scipy matplotlib安装完成之后可以用一个简单命令检查版本python -c import numpy; print(numpy.__version__)如果能够正常输出版本号说明环境没问题。后面的代码都可以基于这套环境运行。6. 用Python复现课程核心实验只听课不实验很难把抽象概念变成自己的工具。这里设计三个最小实验分别对应卷积、傅里叶变换和采样定理。你不一定需要复杂的工程数据只需要几百行以内的简单脚本就能直观观察到课程里反复强调的现象。6.1 实验1卷积与LTI系统响应第一个实验用两个简单的离散序列做卷积。输入信号 x[n] 是一个矩形脉冲系统冲激响应 h[n] 是另一个脉冲通过 numpy 的 convolve 函数计算输出 y[n]。这是 LTI 系统分析里最基本的一次操作。import numpy as np import matplotlib.pyplot as plt # 输入信号10 到 20 时刻为 1其余为 0 x np.zeros(50) x[10:20] 1.0 # 冲激响应一个长度为 25、幅度为 0.5 的脉冲序列 h np.zeros(50) h[5:30] 0.5 # 线性卷积 y np.convolve(x, h, modefull) plt.figure(figsize(10, 6)) plt.subplot(3, 1, 1) plt.stem(x) plt.title(Input signal x[n]) plt.subplot(3, 1, 2) plt.stem(h) plt.title(Impulse response h[n]) plt.subplot(3, 1, 3) plt.stem(y) plt.title(Convolution y[n] x[n] * h[n]) plt.tight_layout() plt.show()这段代码里最关键的是 modefull它会让输出保留两个序列完全重叠的所有位置因此输出长度是 len(x)len(h)-1。如果使用 modesame则会返回和第一个输入长度相同的结果两种模式在不同场景下各有用途。运行后第三个子图会展示一个梯形包络信号说明矩形脉冲经过另一个矩形脉冲后边缘变得平滑。这个现象能帮助你理解卷积的“平滑作用”它是许多滤波器设计的基础。6.2 实验2傅里叶变换与频谱分析第二个实验构造一个由两个不同频率正弦波叠加而成的信号然后用 FFT 观察它的频谱。这个实验会直观告诉你时域上看起来复杂的波形在频域上只有几根清晰的谱线。import numpy as np import matplotlib.pyplot as plt fs 1000 # 采样率 1000 Hz duration 1.0 # 信号时长 1 秒 t np.linspace(0, duration, int(fs * duration), endpointFalse) f1 50 # 第一个正弦频率 50 Hz f2 120 # 第二个正弦频率 120 Hz x np.sin(2 * np.pi * f1 * t) 0.5 * np.sin(2 * np.pi * f2 * t) X np.fft.fft(x) freqs np.fft.fftfreq(len(x), 1 / fs) magnitude np.abs(X) / len(x) # 只取正频率部分 half len(x) // 2 positive_freqs freqs[:half] positive_magnitude magnitude[:half] plt.figure(figsize(10, 4)) plt.plot(positive_freqs, positive_magnitude) plt.title(Single-Sided Spectrum of x(t)) plt.xlabel(Frequency (Hz)) plt.ylabel(Magnitude) plt.xlim(0, 200) plt.grid(True) plt.show()这段代码中np.fft.fft 是核心计算除以 len(x) 是为了把幅度归一到实际正弦波的幅度。从结果可以看到在 50 Hz 和 120 Hz 附近有两个明显的峰值50 Hz 处幅度接近 1120 Hz 处幅度接近 0.5。这个结果和原始信号的构造一致。通过这个实验你会直观理解“频谱”并不是一个抽象数学概念而是信号构成成分的直接表示。后续学习滤波时这个概念会反复用到。6.3 实验3采样定理与混叠第三个实验直接演示采样率不足带来的混叠现象。原始信号是 5 Hz 的正弦波一个采样率选 6 Hz低于奈奎斯特率 10 Hz另一个采样率选 20 Hz高于奈奎斯特率。两个采样结果在波形上看起来完全不同。import numpy as np import matplotlib.pyplot as plt f_signal 5 duration 1.0 # 高频连续采样用来绘制原始信号 t_continuous np.linspace(0, duration, 1000) x_continuous np.sin(2 * np.pi * f_signal * t_continuous) # 欠采样采样率 6 Hz低于奈奎斯特率 fs_low 6 t_low np.linspace(0, duration, int(fs_low * duration), endpointFalse) x_low np.sin(2 * np.pi * f_signal * t_low) # 过采样采样率 20 Hz高于奈奎斯特率 fs_high 20 t_high np.linspace(0, duration, int(fs_high * duration), endpointFalse) x_high np.sin(2 * np.pi * f_signal * t_high) plt.figure(figsize(10, 8)) plt.subplot(3, 1, 1) plt.plot(t_continuous, x_continuous) plt.title(Original continuous signal: 5 Hz) plt.subplot(3, 1, 2) plt.stem(t_low, x_low) plt.title(Sampled at 6 Hz (below Nyquist, aliasing)) plt.subplot(3, 1, 3) plt.stem(t_high, x_high) plt.title(Sampled at 20 Hz (above Nyquist)) plt.tight_layout() plt.show()运行后会看到很直观的区别6 Hz 采样得到的样本点已经无法还原 5 Hz 正弦波的形状甚至看起来像一个低频信号20 Hz 采样的样本点则能清晰呈现正弦波形。这个实验就是在说采样定理的核心信息没有满足采样率要求信号就会“伪装”成另一个频率。实践中ADC 前面通常都要加抗混叠滤波器就是防止这种情况发生。7. 自学习常见问题与排查方法自学者在跟课过程中容易遇到下面几类问题。这些问题的共同根源大多是把注意力放在了数学细节上而忽略了信号背后的物理含义。问题现象可能原因排查方式解决方案卷积结果长度和预期不一致不熟悉 numpy.convolve 的 mode 参数查看官方文档输出长度会随 mode 变化需要完整长度用 full需要匹配输入长度用 sameFFT 频谱幅度看起来异常大或异常小没有对 FFT 结果做归一化打印 np.abs(X) 的最大值用 abs(X)/N 归一化并只取正频率部分采样后看不出混叠采样率设置没有低于奈奎斯特率检查采样率是否小于最高频率的2倍降低采样率或增大信号频率保证 fs 2*fmax拉普拉斯变换和Z变换混淆没有理解 s 平面和 z 平面映射对比 z e^{sT} 的映射关系从连续到离散的映射推导一遍再做例题视频讲的内容能听懂但作业题不会做缺乏独立推导和练习反思是否只看视频没做题看完一讲立刻做教材对应章节的习题不知道某个概念属于时域还是频域概念框架没有建立用一张表整理每个变换的定义域和用途自己做思维导图把连续/离散和时域/频域对应起来这里特别想提醒的是很多人在 FFT 实验里发现幅值不对第一反应是库写错了实际上只是忘了归一化。这说明“工具使用”和“概念理解”是两件事。做实验出现问题时先拆解问题出在数学层面还是代码层面。如果是代码层面打印中间变量往往很快能定位如果是数学层面回到教材对应章节重新推导。8. 最佳实践与工程建议第一个建议是不要贪快。很多自学者希望一个月刷完课程结果到傅里叶变换章节就坚持不下去了。正常节奏应该是每周学两到三讲配合教材阅读和作业练习总共花两到三个月完成核心内容。中间遇到卡顿的地方允许暂停甚至回头重看之前的视频。这门课的知识链很强前面的“LTI系统与卷积”如果没吃透后面的频域分会很难受。第二个建议是建立“直觉笔记”。每学完一个概念不要只是抄定义而是用一句话解释它解决了什么问题再画一个示意图。比如学采样定理可以画一条原始正弦波和两个采样结果直观对比。学傅里叶变换可以画一个时域信号和它的频谱。把这些笔记保存下来比收藏大量视频链接更有用。等你三个月后再回头看这些简图会帮你快速恢复记忆。第三个建议是把课程内容和你正在做的事情联系起来。如果你在写音视频处理可以尝试手动实现一个简单的低通滤波器然后观察它的频率响应如果你在写传感器数据采集可以计算一下当前采样率是否满足奈奎斯特定理并检查是否存在混叠。这种联系会让学习更有动力也会让课程里的抽象概念变得具体。实验部分给出的三个 Python 脚本就是比较好的起点。第四个建议涉及工程安全边界。信号与系统里的很多结论在设计仿真中非常漂亮但部署到真实环境时必须小心边界条件。比如数字滤波器在定点处理器上可能会出现量化误差采样率突然变化可能导致瞬间的相位跳变反馈控制系统在设计稳定后也要考虑执行器延迟和模型不确定性。课程教的是基础理论工程部署还需要结合实时系统的约束建议先在仿真环境充分验证再进入硬件测试。9. 总结与后续学习方向RES.6.007 这门1987年的课程真正讲清楚了一件很多人忽略的事信号与系统的核心不是公式而是模型思维。它把连续和离散世界统一到 LTI 系统的框架之下用卷积描述系统行为用傅里叶变换揭示频率结构用拉普拉斯变换和Z变换扩展分析能力用采样定理连接模拟和数字。这些思想不会因为技术迭代而过时反而会在你接触更复杂的算法时反复出现。如果你按建议学完整个课程下一步可以选择继续深入数字信号处理学习滤波器设计和频谱估计也可以转向通信原理理解调制与解调还可以进入控制理论研究反馈系统和状态空间。无论哪个方向信号与系统都是绕不开的基础。实践中不必追求一次掌握所有细节先把主链跑通边用边补就能真正把这份经典教材变成你的工程肌肉记忆。

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

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

免费获取报价