小虎最近发现了很有意思的采样定理,它是用来解决混叠失真的一个方法,这里小虎就用MATLAB带大家来理解一下这两个概念。
全文目录
- 什么是周期混叠和采样定理
- 混叠失真
- 采样定理
- 采样函数
- 错误的采样函数
- 仿真结果
- 物理意义
- 代码分析
- 完整代码
- 更多
什么是周期混叠和采样定理
混叠失真
对于带限信号,如果对信号的采样频率不够大的话,将会出现混叠失真,一旦出现混叠失真,那么采样将不能够完美重构信号。
采样定理
采样定理(Nyqust and Shannon sampling theorem)是指,当采样频率大于等于信号最高频率的两倍时,采样后的频谱不会产生混叠失真。
采样函数
设采样周期为,采样函数为,则采样函数的表达式如下。
当且仅当时,后面一项不等于0。故
将我们的采样频率代入即可求出采样函数。
例如的采样函数是
错误的采样函数
比如下面这个,不管采样点和采样频率怎么取,采样结果很大程度地偏离了原始信号。采样函数仅存在于模拟仿真,实际采样中,注意的参数是采样频率。
仿真结果
物理意义
1.这里的采样点数量总共只有11个,这11个点已经足够描述一个周期的信号,所以对分析结果没有影响。
2. 当采样频率低于时,采样得到的信号与原信号由于混叠失真无法很好构建原信号,而且越小,偏离越严重,可以从上面图1~3看到。原因是采样的间隔太宽了,在这么宽的间隔中已经经过了好几个信号的周期,取得点相对于原信号密度十分低,这样得到一个新的信号规律将是片面的新点连接。
3. 当采样频率大于时,可以从上面图4看到,采样得到的点连接后,但是很好的拟合出原始信号。
代码分析
自变量范围-0.1~0.1s。
t=-0.1:0.001:0.1;
画出原始信号。
x_t=sin(2*pi*40*t)+3*sin(2*pi*90*t);
plot(t,x_t);
hold on;
设采样点数量和采样频率。
n=-5:5;
fs=300;
在与原信号同一图幅上画出它的采样函数。
xs=sin(2*pi*40*n/fs)+3*sin(2*pi*90*n/fs);
stem(n/fs,xs,'r--');
plot(n/fs,xs,'r--');
xlabel('t');
ylabel('x_4(t)');
legend('x_4(t)','recovery');
完整代码
t=-0.1:0.001:0.1;
x_t=sin(2*pi*40*t)+3*sin(2*pi*90*t);
plot(t,x_t);
hold on;
n=-5:5;
fs=300;
xs=sin(2*pi*40*n/fs)+3*sin(2*pi*90*n/fs);
stem(n/fs,xs,'r--');
plot(n/fs,xs,'r--');
xlabel('t');
ylabel('x_4(t)');
legend('x_4(t)','recovery');