连续时间信号的采样与恢复 Matlab仿真

这篇具有很好参考价值的文章主要介绍了连续时间信号的采样与恢复 Matlab仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

采样

为什么需要采样        

采样是什么

奈奎斯特采样定理 

采样恢复

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


前言

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

采样

  • 为什么需要采样        

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

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

  • 采样是什么

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

        采样过程如下图所示

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

        从频域上看

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

  • 奈奎斯特采样定理 

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

        令是一个带限信号,则

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

  

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

采样恢复

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

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

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

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

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

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

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言

        下面讲一下信号重构公式的意义,由公式我们可以知道,内插公式在抽样点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,算法,开发语言

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

信号的采样与恢复、采样定理的仿真,数字信号处理,matlab,算法,开发语言文章来源地址https://www.toymoban.com/news/detail-786068.html

到了这里,关于连续时间信号的采样与恢复 Matlab仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB连续时间信号的实现和时域基本运算(八)更新中...

    1)熟悉常用连续时间信号的实现方法; 2)掌握连续时间信号的时域基本运算; 3)掌握实现基本函数及其运算的函数的使用方法; 4)加深对信号基本运算的理解。 2-1)、利用 数值法 编程实现 冲激信号δ(t-2)和阶跃信号u(t-1) ,并绘制两者的波形。(注:t取值范围[-1, 4])

    2023年04月26日
    浏览(55)
  • 【信号与系统】【北京航空航天大学】实验三、连续时间信号的频域分析 【MATLAB】

    1、掌握 傅立叶变换(The Fourier Transform) 及其性质; 2、掌握 连续时间信号 傅立叶变换的 数值计算 方法; 3、掌握利用 MATLAB 实现信号的 幅度调制(Amplitude Modulation, AM) 的方法; 4、掌握利用 MATLAB 实现对 周期信号 的 频谱 分析。 1、 MATLAB代码: 公式推导: 叠加生成的 信

    2024年01月19日
    浏览(53)
  • 领悟《信号与系统》之 采样定理

    连续时间信号也叫模拟信号。在一定条件之下,模拟信号可以用该信号在等时间间隔点上的值或样本来表示,且利用这些样本值能将该信号全部恢复出来。采样定理就是讨论采样出来的数据如何恢复出原信号的一些条件。 公式: 例题: 下面是具体的一些原理,很简单的。

    2024年01月15日
    浏览(37)
  • MATLAB Simulink PID仿真图像分析(单双环、连续与离散时间)

    1、概述 我们以电赛题板球控制系统为例,对多种PID系统的仿真结果图像进行分析,分析PID相关结构和参数对于仿真图像的影响。 基本控制思路是:PID计算出给小球的加速度,通过舵机改变小球所在平面的角度,从而赋予小球相应的加速度,改变小球的速度,从而达到间接控

    2024年02月08日
    浏览(49)
  • 调频连续波(FMCW)波形设计、真实道路场景仿真及汽车自适应巡航控制信号处理(Matlab代码实现)

            目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 以下是关于调频连续波(FMCW)波形设计、真实道路场景仿真以及汽车自适应巡航控制信号处理的概述,以及Matlab代码实现的示例: 调频连续波(FMCW)波形设计:FMCW波形是一种特殊的雷达波形,通过改

    2024年02月16日
    浏览(39)
  • 统计信号处理-使用维纳滤波和逆滤波对图像进行恢复-matlab仿真-附代码

    题目 将维纳滤波应用于图像恢复,假设退化图像为一加性高斯白噪声污染的图像,试用逆滤波方法和维纳滤波方法恢复图像,并比较其效果;查阅文献,尝试使用迭代维纳滤波的方法进一步提高效果,注意构建正确的修正项。 逆滤波用于图像恢复简介 逆滤波法是一种从添加

    2024年02月05日
    浏览(50)
  • 信号处理之FIR数字滤波器(Matlab仿真)

            数字滤波器的作用是滤除不感兴趣的信号,留下想要的信号。数字滤波器可分为无限脉冲响应(IIR)数字滤波器、有限脉冲响应(FIR)数字滤波器两种,两者各有优缺点,其中FIR数字滤波器因其具有良好的线性相位特性受到广泛应用,线性相位是指信号中各频率成分的相对

    2024年02月03日
    浏览(49)
  • 数字信号处理 实验一 时域采样与频域采样【实验报告】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 数字信号处理 实验一 时域采样与频域采样【实验报告】 1.时域采样理论的验证。给定模拟信号, 式中A=444.128,a =50 π,w0 =50 πrad/s,它的幅频特性曲线如图1.1 现用DFT(FFT)求该模拟信号的幅频特性,以验

    2024年02月06日
    浏览(47)
  • 利用gvim宏快速生成连续带数字下标的信号

    工作中难免会遇到多次instance某个module,然后某个module的同时又含有多个端口的时候,如下dut,有4个input req_x(x=0-3) 现在我们需要instance 4份dut(dut_0-3),那么端口上对接的信号就会有16个req_x,req_0-3对应dut0 .req_4-7对应dut_1,以此类推,在手动连完dut_0之后,怎么快捷完成其他几个的

    2024年02月22日
    浏览(41)
  • Matlab FFT变换细节(信号采样频率,FFT变换点数,频率分辨率)

    在做深度学习的故障诊断中,发现代码直接将原始信号fft之后直接将实频域信号输入网络中进行诊断,虽说效果比较不错95% 但因为输入的是双边谱且频率范围远超故障特征频率同时由于单个样本的点数只有1024点,信号的采样频率又特别高12k,导致频率分辨率极低,输入网络的序列

    2023年04月08日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包