想象一条蜿蜒的山涧小溪,每一寸河床上都有溪水在流动,你任取一个位置、任意时刻,都能摸到水——这就是连续信号的样子。而山涧上横着一排石阶,你只能踩在固定的石头上过河,石头之间的空隙没有任何支撑——这就是离散信号的样子。手机、电脑这些数字设备天生读不懂永远流动的河水,它们只认一排排整齐的石阶:把河面按固定间隔切出一张张“快照”,再把每块石头凿成标准尺寸,最后铺成一座数字的桥。这座桥从模拟的世界通向数字的世界,一路上有采样、有量化、有编码,还有负责往返摆渡的 ADC 与 DAC。本文就用“溪流与石阶”的故事,带你认识信号的两副面孔。
对 AI 从业者而言,几乎所有训练数据都来自对连续物理世界的离散化采样。搞懂这里的一课,你就明白了语音、图像、传感器数据在进入模型之前,究竟经历了怎样的“翻译”过程。
可视化演示
展示动态规划核心思想:重叠子问题、记忆化搜索与自底向上填表,切换模式查看各方法对比。
本节配有交互动效(进入视口后自动加载,约 3KB)。
递归调用树 紫色为递归调用,粉色为重叠子问题,相同数字重复出现 T(n)=T(n-1)+T(n-2)+O(1) 递归存在大量重复计算,时间复杂度O(2^n)
连续信号概况
还记得山涧里那条小溪吗?它的水在每一寸河床上流淌,你无论把手指伸进哪个位置、哪个时刻,都能感受到水流的温度和速度。这种“处处有值、时刻有值”的特性,就是连续信号最本质的面孔。人的耳朵听到的琴声、话筒采集的声压、温度计里的水银柱,全都属于这类信号,它们不间断地随时间和空间变化。
为了让数学也能“触摸”这条河流,工程师给连续信号起了一个标准的记法。信号的值用小写字母表示,后面跟一个带圆括号的自变量,读作"x of t"。这里的 t 代表时间轴上的任意一个实数——它可以是 0.1 秒,也可以是 0.100001 秒,小数点后面想写几位都行,因为河水在每个瞬间都存在。
1. 符号 x 的含义:信号的名称,就像这条溪流叫什么名字,代表被测量的物理量,比如电压或声压。
2. 圆括号的意义:表示 t 是连续变化的,括号里可以填入任意实数,正如河床上的每个位置都算数。
3. 自变量 t:时间这个“横坐标”,它在实数轴上平滑滑动,不跳步、不留白。
4. 实数集 R 的约束:t 属于所有实数的集合,意味着取值是稠密、无限多的,这正是“处处流动”的数学刻画。
连续信号也叫模拟信号,自然界几乎原汁原味地以这种形态呈现。但也正因为它太“稠密”,信息量无穷大,直接塞给计算机电路根本塞不下——这就像你没法把整条河搬回家,只能先想办法在关键位置留下记号。
离散信号概况
既然搬不走整条河,古人就在河上铺石阶:每隔一臂距离放一块石头,你踩着石头就能过河。石头之间的空隙里没有支撑,但只要你只关心“踩点”,这套石阶就完全够用。离散信号正是这样的石阶——它只在特定时刻有值,其余时间什么都不告诉你。
数学家依然用 x 来称呼它,但圆括号换成了方括号,自变量也换成了整数序号。方括号是一个视觉暗号:看到它,就知道自变量只能取整数,不允许“0.5 个时刻”出现。就像石阶只能数第 1 块、第 2 块,不存在第 1.5 块石头。
1. 方括号的切换:从圆括号换到方括号,标志着我们从“处处可取值”切换到“只认序号”。
2. 自变量 n:离散时间索引,相当于给每块石头编号,n=0 是起点,n=1 是第一块。
3. 整数集 Z 的约束:Z 表示整数集合,n 不能取 1.5 或 0.001,只能是一跳一跳地前进。
4. 整体含义 x[n]:读作“x 的 n 号快照”,即第 n 个采样时刻观察到的河水高度。
数字世界——手机、电脑、耳机里的音乐——全是这种“石阶式”的信号。我们把连续的物理量翻译成一张张编号快照,再存成文件。这个过程看似有丢失,但只要石阶铺得够密、够标准,过河的人根本感觉不到脚下是天然河床还是人工石阶。
周期与频率
溪水的波纹并非杂乱无章,它每隔一段距离就重复一次同样的起伏;石阶上的花纹也可能每隔几块就重复一轮。这种“重复一次的最小长度”,叫周期,记作 $T$,单位是秒。周期越短,说明河水流得越急、波纹抖动得越快。
周期看不直观,工程上更爱用频率这个概念:频率是一秒内波形重复了多少次,记作 $f$,单位是赫兹(Hz)。周期和频率就像“一步有多长”和“一秒迈几步”——步子越短,步数越多,两者互为倒数。物理世界里我们经常还要用到圆频率 $\omega$,它把“每秒重复几次”换算成“每秒转过多少弧度”,多乘一个 $2\pi$ 即可。
1. 周期 T:波形完成一次完整起伏所需的时间,单位秒(s),比如波纹每 0.5 秒重现一次。
2. 频率 f 的换算:频率是周期的倒数,周期越短频率越高,正如步子越短秒内步数越多。
3. 圆频率 ω 的引入:把每秒重复次数放大 $2\pi$ 倍,表示每秒对应的角度进度。
4. 离散世界的周期:离散信号重复的最小整数块数称为 $N$,它必须是整数——石阶花纹只能隔整数块重复。
频率是采样故事里的主角,因为它决定了我们要用多密的石阶才能还原河流。下一节就进入铺石阶的现场:采样。
采样过程
铺石阶的核心动作叫做采样——每隔固定时间 $T_s$,从河里舀一瓢水,记下这瓢水的高度。于是连续函数 $x(t)$ 变成了离散序列 $x[n]$:第 0 块石头对应 $t=0$ 的水位,第 1 块石头对应 $t=T_s$ 的水位,第 $n$ 块石头对应 $t=nT_s$ 的水位。
$T_s$ 被称为采样周期,意思是“相邻两块石头的间距”,单位是秒/块。它的倒数就是采样频率 $f_s$,意思是“每秒铺多少块石头”。如果用每秒 10 次的速度采样,那么 1 秒钟的河段上就会留下 10 个水位记号。把这 10 个记号连起来,就得到了一条“石阶版”的信号。
1. 采样时刻 nTs:第 n 块石头对应的真实时间位置,是 Ts 的整数倍。
2. 快照公式 x(nTs):把连续函数 x 在 nTs 这个时刻的值取出来,当作第 n 个离散值。
3. 采样周期 Ts 的地位:Ts 决定石阶的密度,Ts 越小石头越密,采样越精细。
4. 采样频率 fs:采样周期的倒数,每秒完成的采样次数,单位赫兹(Hz)。
看起来很简单对不对?但这里藏着一个天大的陷阱:如果石头铺得太稀,你过河时可能会认错路——把一条快速起伏的波纹,误看成另一条缓慢摆动的假波纹。这就要请出采样定理了。
采样定理
假设河里同时有 3Hz 和 9Hz 两种波纹,而你每秒只采样 6 次。按照 9Hz 波纹的节奏,它在两个采样点之间就已经完成了将近一整圈的起伏——你根本捕捉不到它的细节。更糟糕的是,这些缺失的起伏会被“脑补”成一条 1Hz 的慢波,这就是著名的混叠现象:高频信号伪装成低频信号,在重建时骗过你的眼睛。
物理学家奈奎斯特给出了一条铁律:要让采样后还能无失真地还原原信号,采样频率必须严格大于信号最高频率的两倍,即 $f_s > 2 f_{\max}$。这个下限值 $2f_{\max}$ 被称为奈奎斯特频率。也就是说,要捕捉 9Hz 的波纹,每秒至少要采 18 次以上——石头间距必须小于波纹最短周期的一半。
1. 最高频率 fmax:信号中所有频率成分里最大的那个,代表最急促的波纹。
2. 两倍的含义:每个最短周期内至少要采到两个点,才能区分“波峰”和“波谷”。
3. 严格大于号:必须是 > 而不是 ≥,恰好等于两倍时边界点依然有歧义,容易出错。
工程上为了防止混叠,还会在采样前装一道抗混叠滤波器,先把高于 $f_s/2$ 的高频成分滤掉,再交给采样器。这就像过河前先把河面上那些太细碎的涟漪抹平,免得它们干扰石阶的铺设计划。不过,光有足够密的石阶还不够——每块石头本身的“尺寸”也要标准化,这就轮到量化出场了。
量化与编码
采样解决了“什么时候舀水”的问题,但没有解决“水位怎么记录”的问题。河水的水位是任意实数,可能是 3.14159 厘米,而数字世界只能存有限的数字,怎么办?工程师的办法是预先做好一批标准尺寸的石头:比如只做 8 种、256 种或 65536 种高度可选,然后把每次采到的水位,就近归到最接近的那一档标准高度上。这个过程叫量化。
标准高度的档数 $M$ 由量化位数 $b$ 决定:$M = 2^b$。8 位量化就是 256 档,16 位量化就是 65536 档。档位之间的高度差叫量化步长 $\Delta$,它等于信号量程(最大值减最小值)除以档数。四舍五入必然带来误差,但误差最多只有半步长——只要 $\Delta$ 足够小,耳朵和眼睛根本察觉不到。
1. 量程范围:信号可能出现的最高值减去最低值,是整条河的水位落差。
2. 台阶总数 2^b:b 位二进制能编出 $2^b$ 种不同组合,每种组合对应一档高度。
3. 量化步长 Δ:相邻两档标准高度之差,也是量化误差的上限来源。
4. 误差边界:真实水位离任何一档都不会超过半个步长,所以量化误差最大为 $\Delta/2$。
采样加量化,再把每档高度写成二进制编号,这一套流程合称脉冲编码调制(PCM)——CD 唱片、WAV 音频用的都是它。到这一步,小溪终于被完整地翻译成了数字石阶:每块石头有位置(采样)、有标准尺寸(量化)、有编号(编码),计算机终于可以接手了。
数模转换设备
溪流与石阶之间,需要两位专职摆渡人。第一位叫 ADC(模数转换器),负责把连续信号送进数字世界:它先“采样保持”——在瞬间抓住水位并稳住,防止信号抖动;再“量化”——把水位归到最近的标准档;最后“编码”——输出一串二进制。智能音箱的麦克风、手机摄像头的光电传感器,都在做这件事。
另一位摆渡人叫 DAC(数模转换器),负责把数字信号接回现实世界:它拿到一串串二进制编号,逐块还原成对应高度的电压台阶,再用一个平滑滤波器把台阶之间的棱角抹掉,重新铺成一条连续波形。播放音乐时,手机里的 DAC 每秒要进行成千上万次这样的“翻译”。
1. 采样率 fs:每秒送入 ADC 的快照数量,决定时间方向的精度。
2. 位深 b:每张快照用多少位二进制存储,决定幅度方向的精度。
3. 比特率 R:两者相乘得到每秒产生的数据量,单位 bit/s,代表数字桥的“吞吐量”。
随着半导体工艺进步,ADC 与 DAC 越来越快、越来越精细,数字世界与模拟世界的边界也越发平滑。但无论设备多先进,底层逻辑始终是那条朴素的溪流与石阶的对话:连续是天然,离散是选择,而采样、量化与编码,就是两端之间永不中断的桥梁。
AI 应用场景
智能语音助手的音频入口
阶段:数据采集与预处理
解决的问题:语音在物理世界里是连续的气压波动,AI 模型只认离散的数字向量。传统方案直接连模拟录音带无法训练模型,必须靠 ADC 把每秒数千次的声压快照变成 PCM 序列,再提取特征喂给模型。
具体案例:当你对智能音箱说“播放天气”,麦克风里的 ADC 以 16kHz 采样、16 位量化,把一秒声音变成 32000 字节的离散数据,再经过端点检测、特征提取后送入语音识别模型。采样率不够,识别率就会断崖式下跌。
工业设备预测性维护的振动监测
阶段:传感器数据采集与特征工程
解决的问题:电机的振动是连续信号,隐藏着轴承磨损的早期征兆。以前靠老师傅听音判断,主观且滞后;如今用加速度传感器按 2kHz 采样,把振动曲线离散化后喂给异常检测模型,提前预警故障。
具体案例:风力发电机上安装加速度计,ADC 以 25.6kHz 采样振动波形,边缘计算盒子先做抗混叠滤波、再按 1024 点一帧切分,送入卷积网络做故障分类,准确率可达 95% 以上。
医疗 AI 的心电图数字化
阶段:医学信号采集与标准化
解决的问题:心电信号极其微弱且噪声大,早期心电图机输出纸带记录,医生肉眼判读。数字化后以 250–1000Hz 采样、12 位量化,配合抗混叠滤波,再用深度学习模型自动识别心律失常,让基层医院也能获得三甲水平的判读。
具体案例:可穿戴心电贴片以 500Hz 采样心电信号,数据经蓝牙传至手机端,AI 模型在边缘侧完成房颤检测,异常时自动报警并上传云端复诊。
Python 演示
import numpy as npimport matplotlib.pyplot as plt def sample_wave(signal_hz=3.0, sample_hz=20.0, seconds=1.0): t = np.linspace(0.0, seconds, 2000) x_cont = np.sin(2.0 * np.pi * signal_hz * t) ts = 1.0 / sample_hz n = np.arange(0, int(seconds / ts) + 1) x_disc = np.sin(2.0 * np.pi * signal_hz * n * ts) return t, x_cont, n, x_disc def plot_panel(ax, t, x_cont, n, x_disc, sample_hz, title): ax.plot(t, x_cont, color="gray", label="continuous x(t)") ax.stem(n / sample_hz, x_disc, linefmt="C0-", markerfmt="C0o") ax.set_title(title) ax.legend() def main(): fig, axes = plt.subplots(2, 1, figsize=(8, 6)) t, xc, n, xd = sample_wave(3.0, 20.0) plot_panel(axes[0], t, xc, n, xd, 20.0, "fs=20Hz, f=3Hz: good sampling") t, xc, n, xd = sample_wave(9.0, 10.0) plot_panel(axes[1], t, xc, n, xd, 10.0, "fs=10Hz, f=9Hz: aliasing") plt.tight_layout() plt.savefig("sampling_demo.png", dpi=120) print("saved sampling_demo.png") if __name__ == "__main__": main()
t = np.linspace(0.0, seconds, 2000)生成 2000 个密集时间点,充当“处处流动”的连续信号坐标轴。x_cont = np.sin(2.0 * np.pi * signal_hz * t)用正弦函数合成一段连续信号,代表河水的波纹。ts = 1.0 / sample_hz由采样频率算出采样周期 Ts,也就是石阶间距。n = np.arange(0, int(seconds / ts) + 1)生成整数采样序号,n 只能取整数,体现离散特征。x_disc = np.sin(2.0 * np.pi * signal_hz * n * ts)只在 nTs 时刻取快照,完成 x[n]=x(nTs)。ax.stem(n / sample_hz, x_disc, ...)用茎叶图画出离散点,肉眼可见“石阶”与连续曲线的贴合程度。sample_wave(9.0, 10.0)用 10Hz 采样 9Hz 信号,违反奈奎斯特定理,造成混叠。
常见误区
误区我总以为像方波、锯齿波这种有棱角的波形就是离散信号,而光滑的正弦波才是连续信号。
正解离散与连续的差别不在波形长得是否光滑,而在时间轴是否连续。方波在每一个时刻仍然都有定义,它依然是连续信号;离散信号只在采样时刻有值,其他时间根本没有定义。石阶的“跳变”源于你只记录固定点,而不是因为水面本身起了棱角。
为何常见:我们习惯从“看起来的样子”判断信号类型,但形式会骗人,本质要看自变量是否能取任意实数。
误区既然信号是 3Hz,那我每秒采 3 次,不多不少,总该够了吧?
正解每秒采 3 次意味着一个周期只采到一个点,你根本无法知道这个点落在波峰还是波谷,更别提还原出正弦形状。奈奎斯特要求至少两倍于最高频率,即在最短周期内至少采两个点,才能区分波峰与波谷。铺石阶过河,至少要让每一步都落在“看得见起伏”的位置。
为何常见:直觉上“一一对应”很合理,但忽略了波峰与波谷需要两个采样点才能定位这一事实。
误区只要把量化位数加到 32 位,采样频率随便设多低都行,反正精度够高。
正解量化位数只解决“高度方向”的精度,解决不了“时间方向”的采样不足。采样频率过低会造成混叠,高频成分直接伪装成低频,这时加再多的量化位数也还原不出原始波形。石阶凿得再精细,如果间距太大,你照样会在两块石头之间掉下河。
为何常见:人们容易把“精度”笼统理解为一个指标,忽略了时间与幅度是两个独立维度的精度。
误区一听到采样和量化都有误差,就觉得数字信号天生比模拟信号差,音质肯定大幅缩水。
正解只要满足奈奎斯特定理且量化位数足够,数字化带来的误差可以做到人耳、人眼完全无法察觉。CD 采用 44.1kHz/16 位的规格,理论上已能覆盖人耳听觉范围。石阶铺得足够密、凿得足够细,过桥人感受到的依然稳稳当当。
为何常见:把“存在误差”与“误差明显”划等号,忽略了工程上可以通过提高规格把误差压到感知阈值以下。
面试题
Q1. 下面哪个描述最符合连续信号的特征?
- A.只在整数时刻有取值
- B.在时间轴上处处有值← 正确答案
- C.只能存储为二进制数组
- D.只包含有限个采样点
答案:B。连续信号正如处处流动的河水,任意时刻都有定义,对应选项 B。A 和 D 是离散信号的特征,C 是数字化存储后的形态,都不符合连续信号“处处有值”的本质。
Q2. 离散信号 x[n] 中的方括号与 n 表示什么?
- A.连续的时间变量 t 的别名
- B.整数序号索引,只能取整数← 正确答案
- C.信号的幅度值大小
- D.采样的频率高低
答案:B。方括号是离散信号的身份证,n 是整数序号,像石阶的编号一样只能一格一格地数。A 属于连续信号的圆括号记法,C 是函数值本身,D 与索引无关。
Q3. 信号频率 f 与周期 T 之间的正确关系是?
- A.f 与 T 成正比
- B.f 等于 T 的平方
- C.f 等于 T 的倒数← 正确答案
- D.f 与 T 完全无关
答案:C。周期是“一步多长”,频率是“一秒迈几步”,二者互为倒数 f=1/T。步子越短则秒内步数越多,所以 A 的正比、B 的平方、D 的无关都是错误的。
Q4. 采样频率 fs 与采样周期 Ts 的关系是?
- A.fs 等于 Ts
- B.fs 等于 1/Ts← 正确答案
- C.fs 等于 Ts/2
- D.fs 等于 2 倍的 Ts
答案:B。采样周期 Ts 是相邻两块石阶的间距,采样频率 fs 是每秒铺的石头块数,两者互为倒数,即 fs=1/Ts。其余选项均不符合这个倒数关系。
Q5. 奈奎斯特采样定理要求采样频率满足什么条件?
- A.fs 小于信号最高频率
- B.fs 大于两倍最高频率← 正确答案
- C.fs 恰好等于最高频率
- D.fs 大于四倍最低频率
答案:B。要还原信号,每个最短周期内至少采两个点,所以 fs 必须严格大于 2fmax。A 与 C 都会漏掉波峰波谷细节,D 关注的是最低频率而非最高频率,方向就错了。
Q6. 用 8 位量化器,最多能区分多少级电平?
- A.8 级电平
- B.16 级电平
- C.64 级电平
- D.256 级电平← 正确答案
答案:D。量化位数 b 对应的电平档数为 2^b,8 位即 2^8=256 级,相当于把水位分成 256 档标准石阶。8、16、64 分别是 2^3、2^4、2^6,把位数与数值直接等同是常见错误。
Q7. ADC 模数转换的四个典型步骤顺序是?
- A.量化、编码、采样保持、比较
- B.采样保持、量化、编码、输出← 正确答案
- C.编码、采样、量化、保持
- D.保持、编码、量化、采样
答案:B。ADC 先把连续信号抓住并稳住(采样保持),再把水位归到标准档(量化),最后把档位编号写成二进制(编码)输出。顺序颠倒会导致逻辑混乱,只有 B 符合这条流水线。
Q8. 下列哪些属于典型的离散信号?
- A.麦克风输出的实时电压
- B.手机音频文件的采样点← 正确答案
- C.大盘每天收盘指数← 正确答案
- D.体温计的连续水银柱
答案:BC。离散信号只在特定时刻有值,像石阶一样一格一格记录。音频文件采样点和每日收盘指数都是按固定间隔记录的快照;麦克风电压和水银柱则是连续的实时量,属于连续信号。
Q9. 当采样频率不足时,下列说法正确的有?
- A.会出现混叠现象← 正确答案
- B.高频分量伪装成低频← 正确答案
- C.增加量化位数可以解决
- D.提高采样频率或滤波可缓解← 正确答案
答案:ABD。采样不足导致高频信号伪装成低频,即混叠,A、B 正确。解决办法是提高采样频率或在采样前用抗混叠滤波器滤掉高频成分,D 正确。量化位数只影响幅度精度,与时间方向的混叠无关,C 错误。
Q10. 影响数字化音质的主要因素有哪些?
- A.采样频率高低← 正确答案
- B.量化位数多少← 正确答案
- C.手机外壳材质
- D.抗混叠滤波设计← 正确答案
答案:ABD。采样频率决定时间方向能否捕捉到高频细节,量化位数决定幅度方向的台阶粗细,抗混叠滤波决定采样前是否把超高频成分正确去除,三者共同决定音质。手机外壳材质属于物理外观,与数字化质量无关。