目录

前言

采样

为什么需要采样

采样是什么

奈奎斯特采样定理

采样恢复

采样定理Matlab仿真(含代码)


前言

记录在学数字信号处理过程中一些个人理解与感悟,本文主要讲的是采样定理在Matlab实现,在此之前会先讲一下傅里叶变换以及采样定理的公式推导等等,本人才疏学浅,此文可能难免出现错误之处,读者如有发现,望请斧正!

采样

  • 为什么需要采样

首先,我们知道很多信号都是连续的,时间间隔是无穷小的,即在一个区间里面有无限个值,当我们使用计算机去处理信号,由于计算机的内存有效,只能完成有限的数据存储和运算,所以将模拟信号用计算机去处理的时候,我们就必须先对模拟信号进行抽样,使其变成离散时间信号,这样就可以使用计算机去处理了,当信号处理完后再将其抽样信号通过一些规则恢复成连续状态即可。

数字信号处理是对模拟信号进行处理的一种方式,最 终可归结为对模拟信号进行处理 数字信号处理不能对模拟信号产生根本性的改变。

  • 采样是什么

首先需要先说明这里只研究等间隔采样的理想采样,其他采样方式和实际采样不在讨论范围之内。采样是利用周期性抽样脉冲信号从连续信号中,等间隔离散点上抽取模拟信号值,得到抽样信号。

采样过程如下图所示

其中T是采样间隔,是采样频率,是采样角频率,是理想抽样信号上述采样过程从时域上看

从频域上看

下面需要用到傅里叶变换,先放公式回忆一下

需要注意的是脉冲冲击串的傅里叶变换仍然为脉冲串,这个通过上面的傅里叶公式可以推出

信号与冲击串频域卷积后的信号是原信号向脉冲所在的位置的平移,即频谱搬迁,记住这句话比记住下面公式重要。

频谱搬迁这个结论说明了输出信号是原信号频谱以采样频率为重复周期的频域延拓,那就会存在一个问题,不同的采样频率采的出来的频谱不一样,有些稀疏,有些密集,当密集到一定程度就会出现混叠,那样我们就不能通过一个滤波器把原信号的频谱给滤出来,进而采样过程变成了不可逆过程,频域图可以看出了原信号的最高频率是,相邻两个频谱相切时中心频率相差,要不混叠即要满足

这里想插一张网上看到的时域和频域的关系图,我觉得很形象的展示了两者的关系

  • 奈奎斯特采样定理

前面我们提到了想要不混叠就必须满足,其实这里所提到的就是我们的奈奎斯特频率。

是一个带限信号,则

那么可以由其采样唯一确定

即想要采样后能够不失真地还原出原信号,则采样信号必须大于信号最高频率的两倍。

上述讲的是理想情况,而非实际情况,实际情况得需要使用A/D转换器,所获得的数字信号是在幅度和时间上量化的信号

采样恢复

在前面呢,我们讨论了与采样相关的知识,并且知道采样想要被完全恢复,就必须要满足奈奎斯特定理,采样完成后,我们就应该说一说采样恢复,也就是将离散时间信号变回连续时间信号。

由采样可知,采样后的频谱是原频谱的复制粘贴,我们只需要通过一个理想低通滤波器,那么就可以得到原信号的频谱。

按照这个想法,我们说需要的低通滤波器以下长这样子

其中T是采样间隔,是采样频率,是采样角频率,是采样后的频域。

下面将结合公式推导一下如何进行采样恢复。

根据上面频域相乘可知恢复信号等于抽样信号与低通滤波器的冲激响应做卷积,我们前面已知

现在我们得把求出来,根据傅里叶公式有

即理想低通滤波器的冲激响应是Sa(t)类型,它称之为抽样函数。

接下来就是做卷积运算,具体过程如下

到这里,我们已经推导出看信号重构的公式,其中称为内插函数,其图像如左下图。采样后的信号经过内插函数,得到连续信号,如右下图

下面讲一下信号重构公式的意义,由公式我们可以知道,内插公式在抽样点mT上,函数值为1,其他抽样点上,函数值为零,不影响其他抽样点,也就是说, 等于各乘于对应的内插函数的总和,在每一个抽样点上,只有对应的内插函数为零,这使得各抽样点上信号值不变,而抽样点之间的信号则由各加权抽样函数波形的延伸叠加而成,因此h(t)的作用就是在各抽样点之间连续插值的作用。

所以信号重构公式也说明了,只要抽样频率大于两倍信号最高频率,则原信号的整个频谱就会完整保留下来,从而整个连续信号时间信号就可以完全由它的抽样值代表,而不会丢失任何信息,这也是奈奎斯特采样定理的意义。

不过理想低通滤波器的频域特性是突变的,实际上不可实现,但是我们可以采用频域缓变的可实现滤波器来逼近理想低通滤波器,所以实际上也是不能完全不失真得重构出原信号,但是在误差范围允许内即可。

采样定理Matlab仿真(含代码)

验证采样定理,首先先需要画出原信号,在这里我写的原信号为两个正弦信号叠加,接着使用15Hz,20Hz,50Hz分别采样与恢复,对于每个信号我都画了时域和频域的图。

其中频域表示和信号重构方式都是用了矩阵相乘的方法实现运算,也可以使用for循环一个一个算。

%. 采样定理验证
%参数设定
t=-0.2:0.0005:0.2;%信号长度
%两个正弦函数的频率
f1 = 5;
f2 = 10;
k = -1 : 0.0001 : 1;
W = k / 0.0005 ; %频域范围%原信号
f_origin = 0.5* sin(2 * pi * f1 * t)-cos(2 * pi * f2 * t);
F_origin = f_origin * exp(-1i * t' * W) * 0.0005;% 乘0.0005是dt
F_origin = abs(F_origin);% 复数没法画图,取绝对值
figure(6);
subplot(4,2,1);plot(t , f_origin);title('原信号');grid on;
subplot(4,2,2);plot(W , F_origin);title('原信号频谱');grid on;
% 频域表示

%20hz采样
fs = 20;
Ts = 1 / fs;
n = -0.2 : 1/fs : 0.2;%采样点
f_20Hz = 0.5 * sin(2 * pi * f1 * n) - cos(2 * pi * f2 * n);
F_20Hz = f_20Hz * exp(-1i * n' * W) * Ts;
F_20Hz = abs(F_20Hz);
figure(6);
subplot(4,3,7);stem(n,f_20Hz);title('20hz采样信号');grid on;
subplot(4,3,8);plot(W,F_20Hz);title('20hz采样信号频谱');grid on;
%20Hz恢复
t = -0.2 : 0.0005 : 0.2;
y = f_20Hz * sinc((ones(length(n),1)*t - n'*ones(1,length(t))) * fs);
subplot(4,3,9);plot(t,y);title('20Hz恢复');grid on;
%20Hz误差
figure(7);
error = abs(y - f_origin);
subplot(3,1,2);plot(t,error);title('20Hz误差');grid on;%50hz采样
fs = 50;
Ts = 1 / fs;
n = -0.2 : 1/fs : 0.2;%采样点
f_50Hz = 0.5 * sin(2 * pi * f1 * n) - cos(2 * pi * f2 * n);
F_50Hz = f_50Hz * exp(-1i * n' * W) * Ts;
F_50Hz = abs(F_50Hz);
figure(6);
subplot(4,3,10);stem(n,f_50Hz);title('50hz采样信号');grid on;
subplot(4,3,11);plot(W,F_50Hz);title('50hz采样信号频谱');grid on;
%50Hz恢复
t = -0.2 : 0.0005 : 0.2;
y = f_50Hz * sinc((ones(length(n),1)*t - n'*ones(1,length(t))) * fs);
subplot(4,3,12);plot(t,y);title('50Hz恢复');grid on;
%50Hz误差
figure(7);
error = abs(y - f_origin);
subplot(3,1,3);plot(t,error);title('50Hz误差');grid on;

得到的图如下

可以看出在不满采样定理的时候,信号不能被完全重构,而在满足采样定理后,信号在误差允许的范围内恢复的与原信号基本一致,下图为误差图,可以看出采样频率越高,误差越小,而且误差呈现两边大中间小的趋势(这个我也不知道为什么)

连续时间信号的采样与恢复 Matlab仿真相关推荐

  1. 第五章 连续时间信号的采样

    第五章 连续时间信号的采样 错题笔记: 冲激响应:对于连续时间 δ ( t ) \delta(t) δ(t),表示为 h ( t ) h(t) h(t):单位脉冲响应:对于离散序列 δ [ n ] \ ...

  2. 信号的采样与恢复matlab实验报告,实验七 连续信号的采样与恢复

    一.实验目的 通过MATLAB仿真验证抽样定理,进一步加深对抽样定理的理解. 二.实验原理 1. 连续信号的采样 对某一连续时间信号f(t)的采样原理图为: 由图可知, ,其中,单位冲激采样信号 的表 ...

  3. 《离散时间信号处理学习笔记》—连续时间信号的采样(四)

    注:本博客是基于奥本海姆<离散时间信号处理>第三版编写,主要是为了自己学习的复习与加深. 一.在A/D和D/A转换中的过采样和噪声形成 一).采样直接量化的过采样A/D转换 1.为了研究过 ...

  4. 离散信号(一) | 信号的采样和恢复+时域、频域采样定理

    离线信号是指在时间上是离散的,即只在某些不连续的规定时刻给出信号的瞬时值,而在其它时刻无意义的信号.连续时间信号的采样是离散信号产生的方法之一,而计算机技术的发展以及数字技术的广泛应用是离散信号分析. ...

  5. matlab混叠现象与频率分辨率,连续时间信号频谱分析研究及MATLAB实现

    0.引言在信号处理过程中,频域分析方法往往比时域分析方法更方便和有效.对于确知连续时间信号,其频域分析可以通过连续时间傅里叶变换来进行,但是,这样计算出来的结果仍然是连续函数,计算机不能直接加以处理. ...

  6. MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析

    一.连续时间信号的表示: 1.向量表示法: 在MATLAB中,是用连续信号在等时间间隔点的样值来近似表示连续信号,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号. 对于连续时间信号f( ...

  7. matlab实现周期阶跃函数,连续时间信号傅利叶变换与MATLAB实现.doc

    Matlab应用实践课程设计 PAGE PAGE 22 - 课程设计任务书 学生姓名: 潘少俊 专业班级:电子科学与技术0701 班 指导教师:梁小宇 工作单位:信息工程学院 题 目: 连续时间信号的 ...

  8. matlab自带的信号,实验一 连续时间信号在MATLAB中的表示..ppt

    <医学信号处理I> 实验一 连续时间信号在MATLAB中的表示和运算 1.1 实验目的 学会使用MATLAB表示常用连续时间信号的方法 观察并熟悉这些信号的波形和特性 1.2 实验原理及实 ...

  9. 【信号系统实验2】MATLAB—连续时间信号与系统的频域分析

    目录 1.实验目的 2.实验内容 1.周期信号的分析 2.非周期信号的分析 3.连续时间系统的响应 1.实验目的 1.熟悉信号的合成.分解原理,了解信号频谱的含义,加深对傅里叶级数的理解. 2.掌握连 ...

最新文章

  1. 递归遍历Linux下的目录文件源码实现
  2. ssm框架mysql配置_ssm框架使用详解配置两个数据源
  3. ffmpeg端口被占用
  4. MATLAB环境认识实验报告,matlab实验报告ljg
  5. 解决: pip install 由于目标计算机积极拒绝,无法连接
  6. 德国超级计算机中心,德国:强化人工智能能力建设 加大高性能计算网络投资...
  7. vscode 本地调试和本地服务
  8. vSphere Web Client 中的 vSAN 性能图 (2144493)
  9. JS中的逻辑运算符、||,位运算符|,
  10. Linux-shell编程_xargs命令详解
  11. 【特征提取】基于matlab基音周期估计【含Matlab源码 551期】
  12. centOS7.6 服务器配置环境
  13. python oserror怎么解决_python – OSError:目录不是空的,如何修复?
  14. tsconfig.json详细配置
  15. 如何解决VMware Workstation上ubuntu出现Host SMbus controller not enabled
  16. idea插件开发--组件--编程久坐提醒
  17. 【Zynq UltraScale+ MPSoC解密学习7】Zynq UltraScale+的PMU
  18. android 图片字体涂鸦,android 涂鸦功能
  19. 一个运维项目的大概流程,附带20种运维开发工具
  20. STM8的C语言编程(14)--+PWM

热门文章

  1. 【递归】两道程序题理解递归
  2. Unity Audio -- (3)创建3D音效
  3. 说话人识别中训练通用背景模型(UBM)的研究
  4. 【Python爬虫+数据可视化】国内疫情或将零增长,我们离疫情结束有多远?(世界地图)
  5. 北京大学给所有Python自学者,分享的一份Python书单,入门的小白不可不读!
  6. PAT乙级(Basic Level)真题-1014 科学计数法 (20)
  7. wood计算机二级考试,全国计算机等级考试一级MSOFFICE上机考试指导(二)
  8. Android隐私弹框
  9. 使用virtualenv搭建一个干净的python开发环境
  10. java-php-net-python-个人信息管理系统计算机毕业设计程序