4. 取样
4.1. 取样
-
取样 (采样)
-
定义:
-
取样 是利用取样脉冲序列
s(t) 从连续信号
f(t)中“抽取”一系列离散样本值的过程;得到的离散信号称为取样信号。
-
取样过程可看成由原信号
f(t) 和取样信号
s(t) 的乘积来描述。
fS(t)=f(t)s(t)
-
TS 取样间隔
-
fS=1/TS 取样频率
-
FS(jω)=2π1F(jω)⋆S(jω) 取样信号频谱
-
设
f(t) 是带限信号, 即
f(t) 的频谱只在区间
(−ωm,ωm) 为有限值,其余区间为
0 。
f(t)⟷F(jω)
-
矩形脉冲取样:
s(t) 是周期为
TS 的矩形脉冲信号(或称为开关函数) 。
S(jω)=2πn=−∞∑∞TSτSa(2nωSτ)δ(ω−nωS)
FS(jω)=2π1F(jω)⋆S(jω)=TSτn=−∞∑∞Sa(2nωSτ)F[j(ω−nωS)]
-
冲激取样:
s(t) 是周期为
TS 的冲激函数序列
δTS(t) 。
取样{自然取样(矩形取样)理想取样(冲激取样)
S(jω)=2πn=−∞∑∞TS1δ(ω−nωS)
FS(jω)=2π1F(jω)⋆S(jω)=TS1n=−∞∑∞F[j(ω−nωS)]
-
Remark:
- 画取样信号
fS(t) 的频谱时,设定
ωS≥2ωm , 此时其频谱不发生混叠,因此利用低通滤波器从
FS(jω) 中提取出
F(jω) , 即从
fS(t) 中恢复原信号
f(t)。否则将发生频谱混叠,而无法恢复原信号。
4.1.1. 取样定理 - 时域
-
要点:
-
f(t) 为带限信号
(−ωm,ωm) 频谱区间。
-
Ts≤2fm1 均匀采样间隔
fs=2fm,Ts=1/fs
-
f(t)=∑n=−∞∞f(nTs)Sa[2ωs(t−nTs)]
-
重要意义:
- 取样定理是连续信号与离散信号间的一座桥梁,为其相互转换提供了理论依据。
- 在一定条件下,一个带限连续信号完全可以用其离散样本值表示。即这些样本值包含了该连续信号的全部信息,用它们可以恢复原信号。
-
由于
fS(t)=f(t)s(t)=f(t)n=−∞∑∞δ(t−nTS)=n=−∞∑∞f(nTS)δ(t−nTS)
- 当
ωS≥2ωm 时,将冲激取样信号通过低通滤波器:
h(t)=TsπωCSa(ωCt)⟷H(jω)={TS,0,∣ω∣<ωC∣ω∣>ωC
- 其截止角频率
ωC 取
ωm<ωC<ωS−ωm, 即可恢复原信号。
- 为方便, 取
ωC=0.5ωS 。
-
取样定理:
f(t)=[n=−∞∑∞f(nTS)δ(t−nTS)]⋆Sa(2ωSt)=n=−∞∑∞f(nTS)Sa[2ωS(t−nTS)]
- 只要已知各取样值
f(nTs), 就可唯一地确定出原信号
f(t)。
-
时域取样定理:一个频谱在区间
(−ωm,ωm) 以外为
0 的带限信号
f(t) ,可唯一地由其在均匀间隔
TS[TS<1/(2fm)] 上的样值点
f(nTS) 确定。
-
Remark: 为恢复原信号,必须满足两个条件:
-
f(t) 必须是带限信号;
- 取样频率不能太低,必须
fS>2fm ,或者说,取样间隔不能太大,必须
TS<1/(2fm);否则将发生混叠。
-
通常把最低允许的取样频率
fS=2fm 称为奈奎斯特频率 (Nyquist Sampling Rate),把最大允许的取样间隔
TS=1/(2fm) 称为奈奎斯特间隔(Nyquist Space) 。
信号表达式 |
频谱 |
最高角频率
ωm |
奈奎斯特角频率
ωs=2ωm |
f1(αt);α=0 |
∣α∣1F1(jαω) |
∣α∣ωm1 |
2∣α∣ωm1 |
f1(t)+f2(t) |
F1(jω)+F2(jω) |
max{ωm1,ωm2} |
2max{ωm1,ωm2} |
f1(t)⋆f2(t) |
F1(jω)⋅F2(jω) |
min{ωm1,ωm2} |
2min{ωm1,ωm2} |
f1(t)⋅f2(t) |
2π1F1(jω)⋆F2(jω) |
ωm1+ωm2 |
2(ωm1+ωm2) |
f12(t) |
2π1F1(jω)⋆F1(jω) |
2ωm1 |
4ωm1 |
4.1.2. 取样定理 - 频域
-
根据时域与频域的对偶性,可推出频域取样定理
-
一个在时域区间
(−tm,tm) 以外为
0 的
时限信号f(t) 的频谱函数
F(jω) ,可唯一地由其在均匀频率间隔
fs[fs<1/(2tm)] 上的样值点
F(jnωs) 确定。
F(jω)=n=−∞∑∞F(jtmnπ)Sa(ωtm−nπ),tm=2fs1
4.1.3. Python 实现Sa信号的采样和恢复
- 信号
Sa(t) 作为被采样信号,信号带宽
B=1 , 采样频率
ωs=2B ,此频率下的采样为 Nyquist 采样,对采样及恢复过程用 Python 进行仿真。
import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as sg
B = 1
wc = B
Ts = np.pi/B
ws = 2*np.pi/Ts
N = 100
n = np.arange(-N,N+1)
nTs = n *Ts
fs = np.sinc(nTs/np.pi)
Dt = 0.005
t = np.arange(-15,15+Dt,Dt)
fa = np.dot(fs,Ts*wc/np.pi*np.sinc((wc/np.pi)*np.ones((len(nTs),1))*t -nTs.reshape(1,201).T*np.ones((1,len(t)))))
error = np.abs(fa-np.sinc(t/np.pi))
plt.figure(figsize=(10,3))
plt.stem(t[::100], np.sinc(t/np.pi)[::100], '-',label='f1', markerfmt='C3o', use_line_collection=True)
plt.ylabel(r'$f(kT_S)$')
plt.xlabel(r'$kT_S$')
plt.title(r'$Sa(t) = sinc(t/\pi)$')
plt.show()
plt.figure(figsize=(10,3))
plt.plot(t,fa)
plt.grid(True)
plt.ylabel(r'$f_a(t)$')
plt.xlabel(r'$t$')
plt.title(r'$Sa(t) = sinc(t/\pi)$')
plt.show()
plt.figure(figsize=(10,3))
plt.plot(t,error)
plt.grid(True)
plt.ylabel(r'$error(t)$')
plt.xlabel(r'$t$')
plt.title(r'$error(t)$')
plt.show()
- 从误差图形中可以看到,用采样信号恢复的信号与原始信号的误差是极小的,而且这种误差来自于计算过程的数值计算误差。
- 表明:对一个信号进行Nyquist采样后,能够无误差地从采样信号中恢复出原信号。
4.1.4. 应用案例: CD数字录音系统
-
CD数字录音系统:
- 麦克风采集声音信号,并输出模拟电信号,即麦克风实现 声电转换 的功能;
- 模拟低通滤波器对来自麦克风的模拟信号进行 滤波 ,滤除高频噪声;
- 为了便于后续的数字处理,需要对模拟信号进行 采样保持 ;
- 将模拟信号进行采样以后得到的信号一般称为 离散信号 。离散信号需要进行 模数转换 (Analog Digital Convert, ADC),得到 数字信号 ,这个过程称为 量化 ;
- 将数字信号编码、调制、同步处理后刻入CD。
-
关键问题:
- CD系统如何选择采样率?
- CD系统的设计目标是期望能够记录下人类听觉系统所能听到的所有声音,其频率范围是 20Hz ~ 20KHz;由时域采样定理知道,采样频率要达到原始信号的 2 倍。这就是图中采样率是 44.1KHz 的原因,采用 44.1KHz 而不是 40KHz 是为了留有一定余量。当然,采样频率越大越有利于完美再现原始信号,但过高的采样率将导致数据量过大。
To TOP 至目录