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

2023-12-05

配套的讲解视频详见 数字信号处理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')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何建立数据流挖掘的滑动窗口模型?

    我们遇到的情况是 流 来自传感器的数据或服务器上的点击流数据 采用滑动窗口算法 我们必须将最后 例如 500 个数据样本存储在内存中 然后 这些样本用于创建直方图 聚合并捕获有关输入数据流中异常的信息 请告诉我如何制作这样的滑动窗 如果您询
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • 将单元格转换为双精度

    gt gt C 1 2 CF 2 C 1 2 CF 2 gt gt whos C Name Size Bytes Class Attributes C 2x2 478 cell 我怎样才能转换C into double以便 gt gt C
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 在 C/C++ 中调用 MATLAB API

    我刚刚从某处听说 对于数值计算 MATLAB 确实提供了一些用户友好的 API 如果你在 C C 代码中调用这些 API 你可以显着加快计算速度 但我在MATLAB文档中没有找到这样的信息 例如http www mathworks com
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 在 Matlab 中快速加载大块二进制文件

    我有一些相当大的 int16 格式的数据文件 256 个通道 大约 75 1 亿个样本 每个文件约 40 50 GB 左右 它以平面二进制格式编写 因此结构类似于 CH1S1 CH2S1 CH3S1 CH256S1 CH1S2 CH2S2
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义

随机推荐

  • MySQL基础教程:安装和配置MySQL

    1 背景介绍 MySQL是一个开源的关系型数据库管理系统 由瑞典MySQL AB公司开发 目前被Sun Microsystems公司收购并成为其子公司 MySQL是最受欢迎的关系型数据库管理系统之一 由于其高性能 稳定 易于使用和免费的特点
  • selenium中元素定位正确但是操作失败,6种解决办法全搞定

    selenium中 元素定位 正确但是操作失败的原因无外乎以下4种 0 1 页面没加载好 解决方法 添加等待方法 如 time sleep 0 2 页面提交需要等待给数据后台 解决方法 添加等待方法 如 time sleep 0 3 浏览器
  • 2023年AI领域行业洞察,看这30个统计数据就够了!

    PrimiHub 一款由密码学专家团队打造的开源隐私计算平台 专注于分享数据安全 密码学 联邦学习 同态加密等隐私计算领域的技术和内容 随着AIGC的爆火 企业越来越多地开始采用生成式人工智能 自然语言处理 NLP 和神经网络来扩展功能 增
  • C#学习 - 事件 续

    事件声明 完整声明 using System namespace ConsoleApp1 internal class Program static void Main string args Customer customer new C
  • mybatis-plus自动生成模板

    1 依赖pom
  • python+django在线考试系统vue_7k6gs

    考虑到实际生活中在学生在线考试管理方面的需要以及对该系统认真的分析 将系统按权限进行划分 管理员登入使用本系统涉到的功能主要有首页 个人中心 用户管理 课程信息管理 试卷管理 试题管理 考试管理等功能 管理员用例如图3 1所示 图3 1 管
  • 工作几年了,你真的懂 Redis 嘛?

    大家好 我是伍六七 一个专注于输出 AI 编程内容的在职大厂资深程序员 全国最大 AI 付费社群破局初创合伙人 关注我一起破除 35 诅咒 Redis 基本上是大部分技术公司都会使用的缓存框架 但是我发现很多程序员其实并不懂 Redis 今
  • 深入理解 Go 语言中的接口(interface)

    一 GoLang 接口的定义 1 GoLang 中的接口 在 Go 语言中接口 interface 是一种类型 一种抽象的类型 接口 interface 定义了一个对象的行为规范 只定义规范不实现 由具体的对象来实现规范的细节 实现接口的条
  • 视音频数据处理入门:AAC音频码流解析

    vs调试内存 FF F9满足代码中的if判断条件 上图代码的目的是获取adts帧的长度 如上述评论 aac frame length占用13个bit 覆盖了buffer 3 buffer 4 buffer 5 下图为查找资料所得 用ue查看
  • 西服学术64开《乡村振兴战略下传统村落文化旅游设计》TOP名校友会X推

    西服学术64开 乡村振兴战略下传统村落文化旅游设计 TOP名校友会X推 西服学术64开 乡村振兴战略下传统村落文化旅游设计 TOP名校友会X推
  • 测试用例:微信发红包测试用例(最新版)

    测试 核心 重点 功能 界面 安全性 易用性 兼容性 性能 一 功能测试 1 一对一红包 一对一发出去的红包自己不能领取 一对一红包金额 最多200 2 群发红包 1 拼手气红包 1 是否可以正常选择拼手气红包 2 红包个数 只能是数字 且
  • Synchronized关键字的底层原理

    Synchronized实现 Synchronized创建的时候一个互斥的对象锁 每次只有一个线程可以获取该锁 其底层主要是基于 Monitor 实现的 在对象的对象头中存储了MarkWord存储的就是Monitor的地址 对象的内存结构
  • 这个Java面试加分项,太牛了!!

    如今在java界 Spring可以说是大行其道 很多大厂选择Spring全家桶作为基础开发框架 无数的研发人员 把Spring看作是最好的java项目 现在的java开发方面 Spring的重要性和影响力是有目共睹的 市场需求摆在这里 大厂
  • 转转前端周刊第九十一期

    转转前端周刊 本刊意在将整理业界精华文章给大家 期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享 可以点击我们的公众号名称 将文章链接和你的解读文案发给我们 我们会对内容进行筛选和审核 保留你的推荐人署名 分享给更多的人 1 爱
  • ES如何提高召回率之【词干提取】

    想要提高召回率就需要尽可能匹配相关的文档 其中一个办法就是在索引阶段对词语分析 分词器 的时候提取词干 搜索的时候也取词干 不取词干 es默认使用的是 标准的分词器 是不会取词干的 但是标准分词器是包含小写转换分词过滤器的 也是可以 提高召
  • 使用Visual Studio创建第一个C代码工程

    文章目录 2019创建C工程 创建C文件 运行 上一节我们使用记事本编辑C代码 在命令行运行文件 这种方式只是作为对编译器的了解 实际的开发中一般使用集成开发环境比较多 因为 集成开发环境 操作比较简单 通常可编辑 具有明显错误的提示图标
  • 豆瓣9.2分,250万Python新手入门的最佳选择!蟒蛇书入门到实践

    在此疾速成长的科技元年 编程就像是许多人通往无限可能世界的门票 而在编程语言的明星阵容中 Python就像是那位独领风 骚的超级巨星 以其简洁易懂的语法和强大的功能 脱颖而出 成为全球最炙手可热的编程语言之一 什么样的书能 异常 靠谱 能在
  • [Ubuntu 20.04] 使用Netplan配置网络静态IP

    Netplan 是一个在 Ubuntu 系统中进行网络配置的工具 它提供了一种简单和统一的方式来管理网络配置 包括网络接口 IP 地址 网关 DNS 设置等 以下是 Netplan 的特点和功能 声明性配置 Netplan 使用 YAML
  • 一站式体验涂鸦云开发

    涂鸦智能近些年通过深耕物联网领域 沉淀了强大的IoT底层技术 稳定全面的平台能力 持续的创新能力和深厚的行业落地经验 成为更多企业实现智能化建设及应用能力打造的最佳合作伙伴 正在携手开发者共同推动万物互联时代的到来 为满足各类软硬件厂商 个
  • 数字信号处理_第4个编程实例(信号的采样与重建)

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