MATLAB——信号的采样与恢复
**题目:**已知一个连续时间信号
其中:f0=1HZ,取最高有限带宽频率fm=5f0。分别显示原连续时间信号波形和
3种情况下抽样信号的波形。并画出它们的幅频特性曲线,并对采样后的信号进行恢复。
step1.绘制出采样信号
这部分相对简单,代码解释直接写在下面程序里。主要来说,通过for循环进行采样,采样后,根据采样频率间隔绘制出采样之后的离散信号。
代码1
%根据题目写出已知信息
f0=1;
fm=5*f0;
f=sin(2*pi*f0*t)+(1/3)*sin(6*pi*f0*t);
%设置时间区间和步进
t=-2:0.01:2;
%绘制出原始,未经采样的图像
subplot(411);
plot(t,f);
title('原始信号')%for循环绘制不同采样频率下的信号
for i=1:1:3;fs=i*fm;Ts=1/fs;%Ts是采样周期,也是采样间隔n=-2:Ts:2;%写出采样后的离散信号f1=sin(2*pi*f0*n)+(1/3)*sin(6*pi*f0*n);%绘制剩下三个采样图像subplot(4,1,1+i);%以实心圆进行绘制stem(n,f1,'filled');end
运行结果1
step2:绘制幅频特性曲线
这里主要使用的方法是傅里叶变换。根据傅里叶变换的公式,确定相关的变量。
代码2
%写出已知信息
f0=1;
fm=5*f0;
fs1=2*fm;
t=-2:0.01:2;
x=sin(2*pi*f0*t)+(1/3)*sin(6*pi*f0*t);%对原始信号进行傅里叶变换
N=length(t);
k=0:N-1;%序号
wm=2*pi*fm;
w1=k*wm/N; %频域对应的角频率,wm/N可以理解为频率间隔,kwm/N,第k个点对应的频率
dt=1/fm %时域时间间隔
X=x*exp(-j*t'*w1)*dt%矩阵形式计算傅里叶变换
subplot(4,1,1);
plot(w1/(2*pi),abs(X));
axis([0,max(3*fm),1.1*min(abs(X)),1.1*max(abs(X))]);%绘制fm,2fm,3fm采样频率下的频谱,对离散信号进行傅里叶变换
%写出离散信号后,进行傅里叶变换
for i=1:3;
fs=i*fm;fs=i*fm;Ts=1/fs;n=-2:Ts:2;xs=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n);N=length(n);ws=2*pi*fs;k=0:N-1;n1=0:N-1;WN=exp(-2*pi*j/N);XS=xs*WN.^(n1'*k);w=k*ws/N;Xs=xs*exp(-j*n'*w)*Ts;%绘制关于频率变化的幅度谱(FT),绘制关于采样点的幅值和相角用DFTsubplot(4,1,1+i);plot(w/(2*pi),abs(Xs));axis([0,max(4*fm),1.1*min(abs(Xs)),1.1*max(abs(Xs))]);
end
运行结果
step3.抽样信号的恢复
这里信号的恢复,主要采用的方式是插值法。时域卷积是用时域抽样信号xs(t)与理想滤波器系统的单位冲激响应h(t)进行卷积积分来求解。卷积积分的公式通过推导化简为内插公式 。
特别要注意生成t−nTst-nTst−nTs的这个过程,要很好的利用矩阵的规律。
目的:我们最后得到的应该是一个1行(3∗T0)/Ts列1行(3*T0)/Ts列1行(3∗T0)/Ts列的行向量。而抽样后的序列xs也是一个1行(3∗T0)/Ts列1行(3*T0)/Ts列1行(3∗T0)/Ts列的行向量,那么就要求sasasa是(3∗T0)/T行乘以(3∗T0)/Ts列(3*T0)/T行乘以(3*T0)/Ts列(3∗T0)/T行乘以(3∗T0)/Ts列的矩阵。而且sasasa取决于t−nTst-nTst−nTs
故借助该行代码生成t−nTst-nTst−nTs
TN=ones(length(n),1)*t1-n'*Ts*ones(1,length(t1));
完整代码
%x信号重建
%写出已知条件
f0=1;
T0=1/f0;
fm=5*f0;
Tm=1/fm;%时域时间间隔
t=0:0.1:3*T0;
x=sin(2*pi*f0*t)+(1/3)*sin(6*pi*f0*t);
subplot(411);
plot(t,x);%生成采样后的信号
for i=1:1:3fs=i*fm;Ts=1/fs;t1=0:Ts:3*T0;xs=sin(2*pi*f0*t1)+(1/3)*sin(6*pi*f0*t1);%生成t-nTs矩阵用于构建插值函数n=0:(3*T0)/Ts;TN=ones(length(n),1)*t1-n'*Ts*ones(1,length(t1));x1=xs*sinc(2*pi*fs*TN);subplot(4,1,1+i);plot(t1,x1);axis([min(t1),max(t1),1.1*min(x1),1.1*max(x1)])
end
运行结果
结果分析
由此次实验可以发现,当采样频率大于信号频率的两倍时,才可以进行恢复,也就是进行无失真传输。
经验
学习MATLAB往往先要想的是,我要达成的目的是什么,这个过程中,我需要用到的函数或者是公式是什么,为了实现这个函数的功能,我需要定义哪些变量。也就是说程序往往是先构建框架,再去填充内容。
此外,在这个过程中本人最怕的是矢量长度必须相等,索引超出矩阵维度。今天信号的恢复那里就卡了一下午,所以说,赤裸裸的教训,每一个变量都应该注意他的维度。
相关文章:

MATLAB——信号的采样与恢复
**题目:**已知一个连续时间信号 其中:f01HZ,取最高有限带宽频率fm5f0。分别显示原连续时间信号波形和 3种情况下抽样信号的波形。并画出它们的幅频特性曲线,并对采样后的信号进行恢复。 step1.绘制出采样信号 这部分相对简单…...

Docker Nginx 反向代理
最近在系统性梳理网关的知识,其中网关的的功能有一个是代理,正好咱们常用的Nginx也具备次功能,今天正好使用Nginx实现一下反向代理,与后面网关的代理做一个对比,因为我使用的docker安装的Nginx,与直接部署N…...

手把手教你实现书上的队列,进来试试?
一.队列的基本概念队列的定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允…...

【springboot】springboot介绍
学习资料 SpringBoot 语雀 (yuque.com)【尚硅谷】SpringBoot2零基础入门教程(spring boot2干货满满)_哔哩哔哩_bilibiliSpringBoot2核心技术与响应式编程: SpringBoot2核心技术与响应式编程 (gitee.com) Spring 和Springboot 1、Spring能做什么 1.1…...

PMP项目管理项目整合管理
目录1 项目整合管理概述2 制定项目章程3 制定项目管理计划4 指导与管理项目工作5 管理项目知识6 监控项目工作7 实施整体变更控制8 结束项目或阶段1 项目整合管理概述 项目整合管理包括对隶属于项目管理过程组的各种过程和项目管理活动进行识别、定义、组合、统一和协调的各个…...

ADS中导入SPICE模型
这里写目录标题在官网中下载SPICE模型ADS中导入SPICE模型在官网中下载SPICE模型 英飞凌官网 ADS中导入SPICE模型 点击option,设置导入选项 然后点击ok 如果destination选择当前的workspace,那么导入完成之后如下: (推荐使用…...

C++:异常
在学习异常之前,来简单总结一下传统的处理错误的方式: 1. 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。 2. 返回错误码,缺陷:需要程序员自己去查找…...

3.初识Vue
目录 1 vue 浏览器调试工具 1.1 安装 1.2 配置 2 数据驱动视图与双向数据绑定 3 简单使用 3.1 下载 3.2 将信息渲染到DOM上 4 使用vue浏览器调试工具 5 vue指令 1 vue 浏览器调试工具 chrome可能是我浏览器的原因,装上用不了,我们使…...
【C语言复习】程序的编译与链接
程序的编译与链接写在前面程序的编译与链接编译的过程程序编译环境程序执行过程编译链接的过程预处理预处理符号#define条件编译写在前面 程序的编译与链接是C语言中非常重要的一节。关键点在于详解C语言的程序编译和链接、宏的定义和与函数的区别、条件编译等知识。 程序的编…...
Golang sql 事务如何进行分层
在写代码过程中遇到了需要使用gorm执行sql事务的情况,研究了一下各位大佬的实现方案,结合了自身遇到的问题,特此记录。 代码架构介绍 . ├── apis ├── config ├── internal │ ├── constant │ ├── controller │ ├──…...
linux系统openssh升级
linux系统openssh升级 说明 整个过程不需要卸载原先的openssl包和openssh的rpm包。本文的环境都是系统自带的openssh,没有经历过手动编译安装方式。如果之前有手动编译安装过openssh,请参照本文自行测试是否能成功。 如果严格参照本文操作,保…...

力扣-求关注者的数量
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1729. 求关注者的数量二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.正确…...

近红外荧光染料修饰氨基IR 825 NH2,IR 825-Amine,IR-825 NH2
IR 825 NH2,IR 825-NH2,IR825 Amine,IR825-Amine,新吲哚菁绿-氨基,荧光染料修饰氨基产品规格:1.CAS号:N/A2.包装规格:10mg,25mg,50mg,包装灵活&am…...

Android Crash和ANR监控
文章目录一、Crash1.1 概念1.2 类型二、ANR2.1 概念2.2 类型2.2.1 KeyDispatchTimeout(常见)2.2.2 BroadcastTimeout2.2.3 ServiceTimeout2.2.4 ContentProviderTimeout三、测试中如何关注3.1 Crash测试关注方法3.2 ANR测试关注方法四、如何记录与处理4.…...
【02 赖世雄英语语法:复句的语法】
复句的语法复句:把单句 连在一起(标点符号,连词,关系词)1. 连接符号1.1 破折号 — :补充说明,同位语1.2 冒号 : (同位语)1.3 分号 ; ( , 连词)&am…...
北斗导航 | 多参考一致性监测算法(MRCC)(附伪码)—— B值计算
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== MRCC 用于接收机失效检查与排除。在进行 MRCC 之前,先判断 4 台接收机…...

数字孪生与 UWB 人员定位:双剑合璧的智能物联新时代
人员定位是指利用各种定位技术对人员在特定场所的位置进行准确定位的技术。人员定位技术主要应用于需要实时监控、管理和保障人员安全的场所,如大型厂区、仓库、医院、学校、商场等。人员定位技术的应用范围非常广泛,例如:-在工厂生产线上&am…...

奇点云DataSimba发版全解析:“企业级”版本升级,提供最佳组合
近日,奇点云发布数据云产品商业化版本的全新升级:DataSimba(数据云平台)提供极速版、专业版、旗舰版、红旗版,可靠性、可用性、可服务性再进阶,四大版本满足不同企业选择。 「乐高式DIY」or「最佳组合」&am…...

2-7 SpringCloud快速开发入门: Eureka 注册中心高可用集群搭建
接上一章节Eureka 服务注册中心发现与消费服务,这里讲讲Eureka 注册中心高可用集群搭建 Eureka 注册中心高可用集群搭建 Eureka 注册中心高可用集群就是各个注册中心相互注册 Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,…...
STL中的函数对象
STL-函数对象 函数对象概念 重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质 函数对象(仿函数)是一个类,不是一个函数—修改算法策略—采用虚拟对象调用 函数对象的使用理…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...