数字信号处理_第4个编程实例(信号的采样与重建)

配套的讲解视频详见数字信号处理14-1_模拟信号转换至数字信号的过程_哔哩哔哩_bilibili,数字信号处理14-2_冲激串的傅里叶变换及采样过程的时频域表示_哔哩哔哩_bilibili,数字信号处理14-3_信号重建与采样定理及Matlab编程实例_哔哩哔哩_bilibili

%% //数字信号处理:绘制信号的采样与重建
%% //作者:gc_yang 小杨小Young               
%% //日期:2023年3月6日%% //初始设置
% 清空工作空间,关闭无关页面
clc,clear,close all;% 绘图变量
font_size = 12; axis_size = 10; line_width = 2; legend_size = 10; marker_size = 12;
figure_width = 10; figure_height = 4; BiaValue = 0;%% //原信号
% x = cos(2*pi*t) + cos(6*pi*t) + cos(10*pi*t)% 原信号时域波形
dt = 0.001;
t  = 0 : dt : 2;
xt = cos(2*pi*t) + cos(6*pi*t) + cos(10*pi*t);% 抽样信号相关参数
% 滤波器截止频率
wc = 20*pi;
% 采样间隔
Ts = 0.05;
% 采样角频率
ws = 2*pi/Ts;
% 抽样信号
t_  = -2 : dt : 2;
ht_ = Ts*wc/pi*sinc(wc/pi*t_);% 采样后信号的波形
% 滤波器时域采样点数
N = 41;
n  = 0 : Ts : Ts*(N-1);
xn = cos(2*pi*n) + cos(6*pi*n) + cos(10*pi*n);% 方法1:采用卷积方法恢复信号
% 对采样后的信号进行内插0,序列长度调整成与原信号一样
xn_Interpolation = zeros(1, length(t));
xn_Interpolation(1, 1:50:end) = xn;
% 卷积
xc_ = conv(xn_Interpolation, ht_);% % 方法2:恢复信号(向量化编程实现:本质还是卷积运算)
% ht = Ts*wc/pi*sinc(wc/pi*t);
% xc = xn*Ts*wc/pi*sinc((wc/pi)*(ones(length(n),1)*t-n'*ones(1,length(t))));%% 绘图
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, xt, 'r-', 'LineWidth', line_width)
hold on
stem(n, xn, 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 2])
ylim([-4 4])
set(gca,'XTick',0 : 0.5 : 2)
set(gca,'YTick',-4 : 2 : 4)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信号强度', 'FontSize', font_size, 'FontName', 'Times New Roman')
legend({'原信号', '采样后的信号'}, 'FontSize', legend_size, 'FontName', 'Times New Roman', 'Location', 'NorthEast');figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t_, ht_, 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([-2 2])
ylim([-0.4 1.2])
set(gca,'XTick',-2 : 1 : 2)
set(gca,'YTick',-0.4 : 0.4 : 1.2)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('抽样信号的强度', 'FontSize', font_size, 'FontName', 'Times New Roman')figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, xt, 'r-', 'LineWidth', line_width)
hold on
plot(t, xc_(1,2001:2000+length(t)), 'b-.', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 2])
ylim([-4 4])
set(gca,'XTick',0 : 0.5 : 2)
set(gca,'YTick',-4 : 2 : 4)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信号强度', 'FontSize', font_size, 'FontName', 'Times New Roman')
legend({'原信号', '重建的信号'}, 'FontSize', legend_size, 'FontName', 'Times New Roman', 'Location', 'NorthEast');figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, xt - xc_(1,2001:2000+length(t)), 'r-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 2])
ylim([-0.4 0.4])
set(gca,'XTick',0 : 0.5 : 2)
set(gca,'YTick',-0.4 : 0.2 : 0.4)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信号误差', 'FontSize', font_size, 'FontName', 'Times New Roman')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令——atq命令

在线Linux命令查询工具 atq 列出当前用户的at任务列表 补充说明 atq命令显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。 语法 atq(选项)选项 -V:显示版本号; -q:查询指定队列的任务。实例 at now 10 minu…

一个完整的手工构建的cuda动态链接库工程 03记

1&#xff0c; 源代码 仅仅是加入了模板函数和对应的 .cuh文件&#xff0c;当前的目录结构如下&#xff1a; icmm/gpu/add.cu #include <stdio.h> #include <cuda_runtime.h>#include "inc/add.cuh"// different name in this level for different type…

pygame时序模块time

文章目录 简介时钟对象平抛运动 pygame系列&#xff1a;初步&#x1f48e;加载图像&#x1f48e;图像变换&#x1f48e;直线绘制 简介 之前在更新图形的时候&#xff0c;为了调控死循环的响应时间&#xff0c;用到了time.sleep。而实际上&#xff0c;我们并不需要额外导入其他…

LeetCode二分查找:寻找比目标字母大的最小字母

LeetCode二分查找&#xff1a;寻找比目标字母大的最小字母 题目描述 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符&…

Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:解决方案1解决方案2:解决方案3:此Bug解决方案总结解决方案总结**心得体会:解决连接超时问题的三种方案**项目场景: 导入Sample时遇到导入失败的情况,并提示“Failed to connect to gitee.com port 443: Time out”连接超…

YouTube Premium 会员白嫖教程

前言 YouTube是美国Alphabet旗下的视频分享网站&#xff0c;也是目前全球最大的视频搜索和分享平台&#xff0c;同时允许用户上传、观看、分享及评论视频 1、点击自己的头像&#xff0c;点击购买内容与会员 2、点击免费试订 3、这里选择个人 4、点击开始试用一个月 5、添加一…

Git 配置文件(.gitignore)

前言 在使用 Git 分布式版本控制系统的时候&#xff0c;有些文件如&#xff1a;数据库的一些配置文件&#xff0c;我们不想让这类文件在远程仓库让 Git 来管理&#xff0c;不想让别人看到&#xff0c;此时就可以自己在 Git 仓库目录下创建 / 在远程仓库创建的时候就配置好 .git…

计算机网络扫盲(3)——网络核心

一、概述 在之前的文章中&#xff0c;我们已经介绍了计算机网络的边缘&#xff0c;本文我们将继续介绍网络核心部分&#xff0c;即由互联因特网系统的分组交换机和链路构成的网状网络。 二、分组交换 在各种网络应用中&#xff0c;端系统彼此交换报文&#xff08;message)。报…

Java内存缓存神器:Caffeine(咖啡因)

文章目录 一、Caffeine简介二、缓存加载1、手动加载2、自动加载3、手动异步加载&#xff08;需要额外的包&#xff09;4、自动异步加载 三、缓存清理1、基于容量2、基于时间3、基于引用 四、缓存移出1、手动移出2、移出监听器 五、刷新缓存 一、Caffeine简介 官网&#xff1a;…

PCL 点云加权均值收缩

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 受到之前Matlab 加权均值质心计算(WMN)的启发,我们在计算每个点的加权质心时可以很容易的发现,他们这些点会受到周围邻近点密度的影响,最后会收缩到某一个区域,那么这个区域也必定是我们比较感兴趣的一些点,…

conda使用——(待完善)

conda删除虚拟环境 conda env remove --name your_env_name Python Anaconda导出(export)环境到environment.yml文件conda create --prefix 命令安装虚拟环境到指定路径报错conda环境打包迁移及部署conda使用yaml创建虚拟环境conda创建新环境Linux查看当前Cuda&#xff08;CUDA…

《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-02-计算软件

文章目录 1. 概述2. 操作系统2.1 操作系统的组成2.2 操作系统的作用2.3 操作系统的特征2.4 操作系统的分类2.4.1 批处理操作系统2.4.2 分时操作系统2.4.3 实时操作系统2.4.4 网络操作系统2.4.5 分布式操作系统2.4.6 微型计算机操作系统2.4.7 嵌入式操作系统3. 数据库3.1 关系型…

2023.12.4

race\牛客\多校\广西师范大学训练赛\雾锁山头山锁雾.cpp #include<bits/stdc.h> #include<iostream> #include<algorithm> #include<map> #include<set> #include<queue> #include<cstring> #include<math.h> #include<ma…

uniapp中进行地图定位

目录 一、创建map 二、data中声明变量 三、获取当前位置信息&#xff0c;进行定位 四、在methods中写移动图标获取地名地址的方法 五、最终展示效果 一、创建map <!-- 地图展示 --><view class"mymap"><!-- <view class"mymap__map"…

LangChain(0.0.340)官方文档五:Model

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、Chat models1.1 Chat models简介1.2 Chat models的调用方式1.2.1 环境配置1.2.2 使用LCEL方式调用Chat models1.2.3 使用内置Chain调用Chat models 1.3 缓存1.3.1 内存缓存…

如何调用 API | 学习笔记

开发者学堂课程【阿里云 API 网关使用教程:如何调用 API】学习笔记&#xff0c;与课程紧密联系&#xff0c;让用户快速学习知识。 课程地址&#xff1a;阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 如何调用 API 调用 API 的三要素 要调用 API 需要三…

Oracle的回收站

Oracle的回收站 一、什么是oracle的回收站二、oracle的回收站相关操作1、设置Oracle回收站的状态2、回收站功能的使用3、查看回收站的状态和内容4、回收站具体应用案例&#xff1a; 一、什么是oracle的回收站 Oracle的回收站是一种功能&#xff0c;它允许用户在删除表中的数据…

Linux系统检查是以虚拟机还是物理机形式运行

平时工作中使用Linux大部分是通过ssh远程连接到服务器上,比如应用安装部署和系统维护等。那么,对于没有进过机房的人,如何知道自己使用的Linux服务器是虚拟机还是物理机呢? 1、dmidecode命令 dmidecode命令可以获取有关系统硬件的详细信息,包括制造商信息, 虚拟机通常会…

Hive 安装部署

文章目录 Hive 安装部署部署模式嵌入模式安装下载安装配置环境启动 Hive 客户端工具 本地模式安装下载安装 MySQL登录 MySQL安装 Hive Hive 命令行交互 Hive 安装部署 部署模式 Hive 有3种部署模式&#xff0c;分别是嵌入模式、本地模式和远程模式。关于这 3 种部署模式的具体…

【软件测试学习】—软件质量需求(四)

【软件测试学习】—软件质量需求&#xff08;四&#xff09; 1 软件质量需求的分类 软件质量需求用于确定测试目标。测试目标包括&#xff1a;功能、性能、界面、易用性、兼容性、安全性、可用性/可靠性、可维 护性、可扩展性等。功能以外统称非功能 2 功能  软件能做什么…