深入理解采样定理 + Matlab 仿真 Sa 函数的采样与恢复
- 建议配合国宝老师的视频食用。
信号与线性系统分析 吴大正 郭宝龙
文章目录
- (1) 采样的说明
- 1. 为什么要取样
- 2. 什么是取样
- (2) 采样定理
- 1. 为什么要有奈奎斯特频率
- 2. 什么是采样定理
- (3) 信号的恢复
- (4) Matlab的Sa函数取样仿真
- 1. 采样信号Sa函数的说明
- 2. 进行参数的说明及相关计算
- 3. 结果的展示
- 4. matlab 代码
(1) 采样的说明
1. 为什么要取样
- 我们要使用计算机去处理信号。信号都是连续的,在任意一个非空区间内都有无限个值,但是计算机的内存是一个有限值,只能完成有限的数据存储和运算,所以要进行采样和量化等操作,把信号离散成有限个点就可以使用计算机处理了。当信号在计算机中处理完,按照一定的规则恢复成连续的状态就可以了。
- 注意采样定理和后面 DFT(discrete Fourier transform) 之间的联系。
2. 什么是取样
- 取样就是利用取样脉冲序列从连续信号中 抽取离散的样本值。
- 从时域上看 fs(t)=f(t)×s(t)f_s(t) = f(t) \times s(t)fs(t)=f(t)×s(t)
- 从频域上看 Fs(jω)=12πF(jω)∗S(jω)F_s(j\omega) = \displaystyle\frac{1}{2\pi}F(j\omega) * S(j\omega)Fs(jω)=2π1F(jω)∗S(jω)
- 冲激取样(理想取样)的例子
- 可以看到在时域上是通过乘积完成对应离散点的选取,在频域上完成的是信号频谱的周期延拓。
(2) 采样定理
1. 为什么要有奈奎斯特频率
- 首先要明白一件事,使用采样点恢复出原来的信号需要的是进行一个低通滤波,把频域上的低频波形滤出来就可以了。
- 从上面的图可以看出来,取样在频域中相当于进行了频谱的周期延拓,所以就会出现一个问题,平移距离不够会引起频域波形的重叠,当发生重叠之后就无法完成滤波了,即无法完成信号的恢复了。因此需要对平移的距离有一个限制,也就是采样定理中的奈奎斯特频率。
2. 什么是采样定理
- 一个频谱在区间 (−ωm,ωm)(-\omega_m,\omega_m)(−ωm,ωm) 以外为 0 的带限信号 f(t)f(t)f(t),可唯一的由其在均匀间隔 Ts[Ts<2π/ωm]T_s [T_s < 2\pi/\omega_m]Ts[Ts<2π/ωm] 上的样值点 f(nTs)f(nT_s)f(nTs) 确定。
- 注意必须是带限信号。像冲激函数这样的就无法取样,因为在频域上的无限意味着在时域信号的存在时间无限趋于 0。
- 取样频率不能太低,必须 fs>2fmf_s > 2f_mfs>2fm 。最低取样频率 fs=2fmf_s = 2f_mfs=2fm称为奈奎斯特频率。
(3) 信号的恢复
- 参量的说明
- 低通滤波器的截止角频率:ωc\omega_cωc,从图上明显可以看出需要有 ωm<ωc<ωs−ωm\omega_m<\omega_c<\omega_s-\omega_mωm<ωc<ωs−ωm,为方便取 ωc=0.5ωs\omega_c = 0.5\omega_sωc=0.5ωs。
- 采样角频率: ωs\omega_sωs,注意根据采样定理 ωs>2ωm\omega_s > 2\omega_mωs>2ωm。
- 带限信号的最大角频率:ωm\omega_mωm。
- 信号恢复的过程是信号采样过程的逆过程。实际上在进行频域乘积滤波的过程中,时域进行了卷积的平移,平移到不同位置的函数叠加就恢复出原始信号。
(4) Matlab的Sa函数取样仿真
1. 采样信号Sa函数的说明
- Matlab 中自带的函数是
sinc
函数,其形式是 sin(πt)πt\displaystyle\frac{sin(\pi t)}{\pi t}πtsin(πt),我们要在仿真中使用的是Sa
函数,其形式是 sin(t)t\displaystyle\frac{sin(t)}{t}tsin(t),因此sa = sinc(t/pi)
。 - 代码:
%% 打印出来sa函数 t = -20:0.001:20; L = length(t); x = sinc(t / pi); plot(t,x,'LineWidth',3); xlabel('t');ylabel('Amplitude'); title('Sa(t)')
- 结果:
2. 进行参数的说明及相关计算
- 参数说明
- sa(t)sa(t)sa(t) 的傅里叶变换结果是 πg2(ω)\pi g_2(\omega)πg2(ω),就是一个门宽为 2 的门函数。因此可以知道 ωm=1\omega_m = 1ωm=1。
- 根据奈奎斯特采样定律,这里选取 ωs=2ωm\omega_s = 2\omega_mωs=2ωm,ωs=1.5ωm\omega_s=1.5\omega_mωs=1.5ωm,ωs=4ωm\omega_s=4\omega_mωs=4ωm。分别模拟临界采样,欠采样和过采样三种情况。相应的选取信号还原时低通滤波器的截止频率 ωc=0.5ωs\omega_c = 0.5\omega_sωc=0.5ωs。
- 这里选取时域的正半轴取样点一共 N 个,下面使用 ∞\infin∞ 推公式,但是最后要用 NNN。
- 信号取样
- 冲激取样函数:δTs(t)=∑n=−∞∞δ(t−nTs)\delta_{T_s}(t)=\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s)δTs(t)=n=−∞∑∞δ(t−nTs)。
- 通过采样的定义可知 fs(t)=f(t)×sa(t)f_s(t) = f(t) \times sa(t)fs(t)=f(t)×sa(t),在matlab中只需要
fs = sinc(t/pi)
。
- 信号恢复
- 采样后的信号在时域上的表达式为 fs(t)=f(t)∑n=−∞∞δ(t−nTs)=∑n=−∞∞δ(t−nTs)f(nTs)f_s(t)=f(t)\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s)=\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s)f(nT_s)fs(t)=f(t)n=−∞∑∞δ(t−nTs)=n=−∞∑∞δ(t−nTs)f(nTs)
- 假设采样后的信号在频域上的表达式为 Fs(jω)F_s(j\omega)Fs(jω),并选取低通滤波器
H(ω)={Ts,∣ω∣≤ωc0,∣ω∣>ωcH(\omega)=\begin{cases} T_s ,&|\omega|\leq \omega_c\\ 0, & |\omega|> \omega_c \end{cases}H(ω)={Ts,0,∣ω∣≤ωc∣ω∣>ωc
可以算出 H(ω)H(\omega)H(ω) 在时域上的表达式 h(t)=Tsωcπsa(ωct)h(t)=T_s\displaystyle\frac{\omega_c}{\pi}sa(\omega_ct)h(t)=Tsπωcsa(ωct)。之所以选取H(ω)H(\omega)H(ω)的放大倍数为 TsT_sTs 是因为此时 h(t)h(t)h(t) 的系数是 1(因为 ωc=0.5ωs\omega_c = 0.5\omega_sωc=0.5ωs)。 - 根据前面的讨论,让取样后的信号通过低通滤波器相当于频域相乘即 F(jω)=Fs(jω)×H(ω)F(j\omega) = F_s(j\omega)\times H(\omega)F(jω)=Fs(jω)×H(ω)。同时根据时域和频域的关系,f(t)=fs(t)∗h(t)f(t) = f_s(t) * h(t)f(t)=fs(t)∗h(t)。带入前面的结果可以得到f(t)=Tsωcπ∑n=−∞∞f(nTs)sa(ωc(t−nTs))f(t)=T_s\displaystyle\frac{\omega_c}{\pi}\displaystyle\sum_{n=-\infin}^{\infin}f(nT_s)sa(\omega_c(t-nT_s))f(t)=Tsπωcn=−∞∑∞f(nTs)sa(ωc(t−nTs))
3. 结果的展示
- 临界取样
- 过采样(实际上这里有一点不太明白,为什么过采样恢复后信号的误差会比临界采样的大??)
- 欠采样
4. matlab 代码
%% matlab 完成Sa信号的采样和恢复
%% 取样(临界取样)
% 取样
figure(1);
wm = 1; %信号的最大频率
ws = 2 * wm; %信号的采样频率(根据奈奎斯特频率)
wc = 0.5 * ws;%滤波器的截止频率
Ts = 2*pi/ws;%采样间隔
N = 10;%时域采样点数
n = -N:N;
nTs = n * Ts;%采样数据的采样时间
fs = sinc(nTs/pi);%完成采样
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的临界取样信号");
% 还原
Dt = 0.005;
t = -15:Dt:15;
fa = Ts*wc/pi * fs * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由临界取样信号重构sa(t)");
% 展示误差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重构信号与原信号的误差error(t)");
%% 取样(过取样)
% 取样
figure(2);
wm = 1; %信号的最大频率
ws = 4 * wm; %信号的采样频率(根据奈奎斯特频率)
wc = 0.5 * ws;%滤波器的截止频率
Ts = 2*pi/ws;%采样间隔
N = 20;%时域采样点数
n = -N:N;
nTs = n * Ts;%采样数据的采样时间
fs = sinc(nTs/pi);%完成采样
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的过取样信号");
% 还原
Dt = 0.005;
t = -15:Dt:15;
fa = fs*Ts*wc/pi * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由过取样信号重构sa(t)");
% 展示误差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重构信号与原信号的误差error(t)");
%% 取样(欠取样)
% 取样
figure(3);
wm = 1; %信号的最大频率
ws = 1.5 * wm; %信号的采样频率(根据奈奎斯特频率)
wc = 0.5 * ws;%滤波器的截止频率
Ts = 2*pi/ws;%采样间隔
N = 7;%时域采样点数
n = -N:N;
nTs = n * Ts;%采样数据的采样时间
fs = sinc(nTs/pi);%完成采样
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的欠取样信号");
% 还原
Dt = 0.005;
t = -15:Dt:15;
fa = fs*Ts*wc/pi * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由欠取样信号重构sa(t)");
% 展示误差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重构信号与原信号的误差error(t)");
现在已经转移到知乎,之后的文章会在知乎更新。
深入理解采样定理 + Matlab 仿真 Sa 函数的采样与恢复相关推荐
- 低通采样定理 matlab,低通采样定理
引入低通滤波器或提高低通滤波器的参数;该低通滤波器通常称为抗混叠滤波器 抗混叠滤波器可限制信号的带宽,使之满足采样定理的条件.从理论上来说,这是可行的, ...... 3.理想低通滤波器的响应 3.8 ...
- 低通采样定理 matlab,基于matlab的低通抽样定理仿真
基于matlab的低通抽样定理仿真 DSP 课 程 设 计 专业: 电子信息技术工程 年级: 2011 级 不 姓名: 陈兰兰 学号: 20113015 指导教师: 刘 德 春 阿坝师专电子信息工程系 ...
- 低通采样定理 matlab,基于Matlab的低通抽样定理仿真.docx
DSP课程设计专业: 电子信息技术工程 年级: 2011级 不姓名: 陈兰兰学号: 指导教师: 刘 德 春 阿坝师专电子信息工程系DSP课程设计专业: 电子信息技术工程 年级: 2011级 不姓名: ...
- 连续时间采样及采样定理——MATLAB
一.实验目的 1.掌握连续时间信号离散化的方法(即采样),并能利用Matlab编程加以仿真实现; 2.掌握连续时间信号的傅立叶变换和离散时变换的仿真实现方法: 3.学会利用傅里叶变换和离散时间信号的傅 ...
- matlab仿真冲激响应函数,无限冲激响应数字滤波器的设计与MATLAB仿真
<工业控制计算机>2011 年第 24 卷第 10 期 本文针对 IIR 数字滤波器的特点, 根据相应的设计指标运用 MATLAB 软件开展了对数字滤波器的研究并对设计的滤波器实现了仿真以 ...
- 低通采样定理 matlab,通信原理MATLAB验证低通抽样定理实验报告
通信原理MATLAB验证低通抽样定理实验报告 p通信原理实验报告/pp一.实验名称/ppMATLAB验证低通采样定理/pp二.实验目的/pp1.掌握取样定理的工作原理./pp2.通过MATLAB编程实 ...
- matlab仿真plant函数,(整理)matlab预测控制工具箱函数.
精品文档 精品文档 MATLAB 预测控制工具箱函数 1通用的传递函数转变为MPC 传递函数模型 (1) 2MPC 传递函数模型转换为MPC 阶跃响应模型 (1) 3基于阶跃响应模型的控制器设计和仿真 ...
- matlab表示sa函数,SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对二元函数优化求解——Jason niu...
%SA:T1法利用Matlab编写主函数实现对定义域[-5,5]上的二元函数求最优解-Jason niu [x,y] = meshgrid(-5:0.1:5,-5:0.1:5); z = x.^2 + ...
- 香农采样定理和奈奎斯特采样定理
香农(Shannon)采样定理和奈奎斯特(Nyquist)采样定理是数字信号处理中两个重要的定理,它们都与信号的采样和重构有关. 香农采样定理(Shannon Sampling Theorem): 香 ...
最新文章
- python中defaultdict()函数的介绍以及应用场景
- python数据结构算法 北京大学_北京大学公开课《数据结构与算法Python版》
- 解决了MovieClip缩略图问题
- 在Extjs中对日期的处理,以及在后端数据在SQL语句的判断处理
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署...
- 如何解决json中携带的反斜杠_【经验分享】python干货:5种反扒机制的解决方法...
- MD5算法的C++实现
- 如何更改java应用程序标题栏默认图标
- 主成分分析 PCA算法原理
- 软考论文写作方法及规范
- 我们的小太阳钟汉良,不老男神,希望你继续帅下去
- MySQL 优化 —— IS NULL 优化
- 三堆竹子两棵树一个门
- python基础练习题1(12题)
- linux 睡眠到硬盘,Linux 休眠原理与实现
- 电话交换机的作用,程控交换机的作用
- Direct3D 12工作原理概述
- 基于Android平台的图书管理系统的制作(1)
- c语言 青蛙上台阶问题
- LDPC码简介【定义、特点、算法、Tanner】
热门文章
- 计算机学生台式机推荐,开学啦 开学啦 热门学生电脑大推荐
- 更精准地生成字幕!哥大Facebook提出Vx2Text:多模态融合,性能更强!
- 五、SQL Server数据库创建与删除(使用SQL语句)
- 如何用ipad录屏,实现16:9视频录制格式?
- 【海洋女神原创】一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(一)---基本设置一...
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二...
- Avrora学习笔记(官网)
- 15BGP非等价负载均衡
- python 适合做什么生意赚钱投资小_使用Python进行优化:如何以最小的风险赚取最多的收益?...
- 计算机一级大题知识点,全国计算机等级考试一级基本操作题考点