当前位置: 首页 > news >正文

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-nTstnTs的这个过程,要很好的利用矩阵的规律。
目的:我们最后得到的应该是一个1行(3∗T0)/Ts列1行(3*T0)/Ts列1(3T0)/Ts的行向量。而抽样后的序列xs也是一个1行(3∗T0)/Ts列1行(3*T0)/Ts列1(3T0)/Ts的行向量,那么就要求sasasa(3∗T0)/T行乘以(3∗T0)/Ts列(3*T0)/T行乘以(3*T0)/Ts列(3T0)/T行乘以(3T0)/Ts的矩阵。而且sasasa取决于t−nTst-nTstnTs
故借助该行代码生成t−nTst-nTstnTs

  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的高可用实际上就是将自己作为服务向其他服务注册中心注册自己&#xff0c…...

STL中的函数对象

STL-函数对象 函数对象概念 重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质 函数对象(仿函数)是一个类,不是一个函数—修改算法策略—采用虚拟对象调用 函数对象的使用理…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...