Skip to content

从连续信号到离散序列

一个连续变化的量要进入数字系统,第一件事就是采样。比如麦克风前的声压、温度传感器的读数、振动台的位移,这些都随时间连续变化。计算机能存下来的,只是按时刻取到的一串数字。采样,就是在连续时间轴上选一些时刻,把这些时刻的信号值取出来。

一天的温度曲线 T(t)T(t)tt(小时)连续变化。气象站每 3 小时记一次,它保存的只是曲线上几个固定时刻的值。在连续曲线上定时取值,这就是采样。

图A.1-1:温度曲线与采样点
图A.1-1:温度曲线与采样点

图中的圆点就是被留下来的温度值。前几个点可以写成

T[0]=T(0),T[1]=T(3),T[2]=T(6), T[0]=T(0),\quad T[1]=T(3),\quad T[2]=T(6),\quad \ldots

圆括号里的量仍是连续时间,方括号里的量是样本序号。样本序号只表示样本在这串记录中的位置。

因为这里每 3 小时取一次点,上面的关系可以压缩成

T[n]=T(3n),n=0,1,2, T[n]=T(3n),\quad n=0,1,2,\ldots

其实就是把”每隔 3 小时取一个值”写成了统一形式。

信号处理中通常把连续信号记为 x(t)x(t)。采样以后得到的离散序列写成

x[n]=x(nTs),n=0,1,2, x[n]=x(nT_s),\quad n=0,1,2,\ldots

这里 TsT_s 是采样周期,表示相邻两个采样时刻之间隔多久;fsf_s 是采样频率,表示单位时间采多少次。

fs=1Ts f_s=\frac{1}{T_s}

举个例子。若 x(t)=2t+1x(t)=2t+1,采样周期 Ts=0.1 sT_s=0.1\text{ s},那么第 3 个样本来自 t=3Ts=0.3 st=3T_s=0.3\text{ s},所以

x[3]=x(0.3)=2×0.3+1=1.6 x[3]=x(0.3)=2\times0.3+1=1.6

同一个例子整理成表,

样本序号连续时刻样本值
0000x[0]=x(0)=1x[0]=x(0)=1
110.1 s0.1\text{ s}x[1]=x(0.1)=1.2x[1]=x(0.1)=1.2
220.2 s0.2\text{ s}x[2]=x(0.2)=1.4x[2]=x(0.2)=1.4
330.3 s0.3\text{ s}x[3]=x(0.3)=1.6x[3]=x(0.3)=1.6

下图把样本序号、连续时刻和样本的对应关系摆出来。从上往下看,第 nn 个样本来自连续时间轴上的 t=nTst=nT_s 时刻。

图A.1-2:样本序号与采样时刻
图A.1-2:样本序号与采样时刻

所以 x[3]x[3] 表示第 3 个采样点,对应的连续时刻是 3Ts3T_s。下图把同样的对应关系放到一个一般信号上。蓝线是连续信号,圆点是被留下来的样本。

图A.1-3:连续信号的采样
图A.1-3:连续信号的采样

采样周期越小,时间轴上的点越密;采样周期越大,点越稀。拿 1 Hz 正弦波看一下就清楚了。1 Hz 表示 1 秒完成一个周期。若每 0.25 秒采一次,一个周期内有 4 个采样点;若每 0.5 秒采一次,一个周期内只有 2 个采样点。

图A.1-4:采样间隔对比
图A.1-4:采样间隔对比

先看一个周期里留下了几个点。点越稀,就越难从样本判断两点之间发生了什么。

数字系统实际处理的是 x[n]x[n],也就是一串样本值。分析频谱时还要用到另一个写法,把这些样本放回连续时间轴,用一根根理想脉冲标出采样时刻和样本值。

这两个对象要分开看,

对象位置作用
x(t)x(t)连续时间轴原来的连续信号
x[n]x[n]离散序号轴数字系统实际处理的样本序列
xs(t)x_s(t)连续时间轴分析采样对频谱的影响

x[n]x[n] 是数字系统手里的序列;xs(t)x_s(t) 是后面做频域分析时用的理想模型。

用来标出采样时刻的记号是 δ(ta)\delta(t-a)。把它当作放在 t=at=a 处的一根理想标记就行了。许多个这样的时刻标记按 TsT_s 排开,就得到采样脉冲列。

图A.1-5:采样时刻脉冲列
图A.1-5:采样时刻脉冲列

单个脉冲与信号相乘时,

x(t)δ(ta)=x(a)δ(ta) x(t)\delta(t-a)=x(a)\delta(t-a)

脉冲的位置仍在 aa,权重变成该时刻的样本值。

图A.1-6:单个脉冲采样
图A.1-6:单个脉冲采样

仍用 x(t)=2t+1x(t)=2t+1Ts=0.1 sT_s=0.1\text{ s} 的例子,第 3 根脉冲放在 0.3 s0.3\text{ s},相乘后位置仍是 0.3 s0.3\text{ s},权重变成 x(0.3)=1.6x(0.3)=1.6。位置不变,权重改变。

如果不写理想脉冲,只看”第 3 个采样时刻留下了哪个值”,可以把这个动作写成

y(t)={1.6,t=0.3 s0,t0.3 s y(t)= \begin{cases} 1.6, & t=0.3\text{ s}\\ 0, & t\ne 0.3\text{ s} \end{cases}

这只是帮助理解的写法:它仍然放在连续时间轴上,tt 可以取任意连续时刻,但非零的位置只有 0.3 s0.3\text{ s} 这一点。离散序列 x[3]=1.6x[3]=1.6 只记录”第 3 个样本的值”,而这个连续时间写法还把样本放回了 t=0.3 st=0.3\text{ s} 的位置。

先只写三个采样时刻 0,Ts,2Ts0,T_s,2T_s。对应的脉冲列是

δ(t)+δ(tTs)+δ(t2Ts) \delta(t)+\delta(t-T_s)+\delta(t-2T_s)

让它与 x(t)x(t) 相乘,得到

x(0)δ(t)+x(Ts)δ(tTs)+x(2Ts)δ(t2Ts) x(0)\delta(t)+x(T_s)\delta(t-T_s)+x(2T_s)\delta(t-2T_s)

这三项说明了理想采样模型的结构,位置来自采样时刻,权重来自对应的样本值。

位置权重
x(0)δ(t)x(0)\delta(t)00x(0)x(0)
x(Ts)δ(tTs)x(T_s)\delta(t-T_s)TsT_sx(Ts)x(T_s)
x(2Ts)δ(t2Ts)x(2T_s)\delta(t-2T_s)2Ts2T_sx(2Ts)x(2T_s)

下图画的就是这种加权脉冲列。

图A.1-7:加权脉冲列
图A.1-7:加权脉冲列

把所有采样时刻都写进去,采样脉冲列常记为

p(t)=n=δ(tnTs) p(t)=\sum_{n=-\infty}^{\infty}\delta(t-nT_s)

实际数据总是从某个时刻开始,也只有有限长度。这里写成从 -\infty++\infty,是为了后面做频域分析时式子简洁。

于是理想采样可以写成

xs(t)=x(t)p(t) x_s(t)=x(t)p(t)

展开后就是

xs(t)=n=x(nTs)δ(tnTs) x_s(t)=\sum_{n=-\infty}^{\infty}x(nT_s)\delta(t-nT_s)

下图把连续信号、采样脉冲列和采样结果放在同一张图里。

图A.1-8:理想采样模型
图A.1-8:理想采样模型

采样中有两层关系。数字系统实际处理的是序列 x[n]=x(nTs)x[n]=x(nT_s);分析频谱时使用的是理想模型 xs(t)x_s(t)。前者是数据,后者是工具。

本节配了一个练习文件,可以跑一跑、改改参数,亲手看看采样率变化对时间分辨率的影响。配套资源打包在专栏入口处。