本文讨论模拟信号的采样与重建。首先,我们关心的是模拟信号经过采样后是否会失掉一些信息;其次,由离散时间信号恢复成模拟信号应该具备哪些条件?
对于等间隔采样,采样周期T是常数,T的倒数称为采样频率,记为fs,而其对应的角频率Ωs=2π/T=2πfs。
下面讨论《MATLAB R2016a完全自学一本通》第446页示例,正弦序列x(t)=Asin(2πft+φ)的采样,其中幅度A=4、频率f=100、初始相位φ=1、点数为64。即采样频率为64hz。
相应的matlab函数如下:
clear all;clc;close all; N=64; A=4; f=100; fai=1; xn=0:N-1; x=A*sin(2*pi*f*(xn/N)+fai); figure; subplot(121); stem(xn,x); axis([-1,N,(-A-0.25),(A+0.25)]); subplot(122); %第二张图画采样足够密集的近似连续图 xx=0:0.001:N-1; y=A*sin(2*pi*f*(xx/N)+fai); plot(xx,y); axis([-1,N,(-A-0.25),(A+0.25)]);
这里运行结果为:
图片包含了100个周期的正弦函数。由奈奎斯特采样定理,在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理又称奈奎斯特定理。 [1] 如果对信号的其它约束是已知的,则当不满足采样率标准时,完美重建仍然是可能的。 在某些情况下(当不满足采样率标准时),利用附加的约束允许近似重建。 这些重建的保真度可以使用Bochner定理来验证和量化。 [2]
这里采样频率64不大于模拟信号频率100的二倍200,故无法完美重建原模拟信号。
下面为了直观,考虑f=3,即图片中显示3个周期的结果。当采样点数N=5时,无法完美重建;采样点数N=7时,可以完美重建。
代码稍作修改如下:
clear all;clc;close all; N=5; A=4; f=3; fai=1; xn=0:N-1; x=A*sin(2*pi*f*(xn/N)+fai); figure; stem(xn,x); axis([-1,N,(-A-0.25),(A+0.25)]); title('采样序列N=5'); hold on; xx=0:0.001:N-1; y=A*sin(2*pi*f*(xx/N)+fai); plot(xx,y); axis([-1,N,(-A-0.25),(A+0.25)]);
注意,当采样点不是足够密集时,对采样点简单的直线相连(拟合)将得到错误的,类似于调幅波的图像。因为载波恢复的过程是多个抽样函数的叠加而不是用尽量平滑的线将采样点相连。
后面发文讨论采样信号恢复的matlab仿真。