数字信号处理基础知识(二)
在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大家在后期的工程应用中会有更多启发价值。
这里不由地多写一些题外话,可能会引起不少朋友共鸣,笔者读高中时学化学和生物,依稀记得高中比初中的内容要深很多并且老师上课讲得很快,一时间灌入很多概念和公式,那时也没有现在这么多一对一辅导补课,都是传统大班教育,老师上课讲过布置作业,课后同学买练习册刷题巩固,但是这样的学习方式延续到高三就较为吃力,特别是生物感到很多东西都见过,考试时成绩却很不好。
这时生物老师告诉了一个方法叫“回归课本”,于是笔者在高三中期少刷题、多看书。因为刷题见了很多概念上的应用,再回过头看书上的概念,一些模糊的知识点就慢慢清晰了,坚持下来到高三后期化学和生物成绩就提高很快,会发现虽然题型在不断变化,但是都在那些知识点中来回变换。
一晃眼已经硕士毕业工作六年了,有时回想起高中和本科学习过程,真的也会感到很多似曾相识,比如本科学习一个专业,学校会给开设很多门专业课,但是大部分只在学习理论概念,为了保研考研大家又要延续了高中时期的苦学精神,但是即便笔试和上机成绩很好,面对现实项目又不知所学专业知识的具体应用在哪里,大学老师通常也只是就课本概念问题给予一些解答,所以说本科学习可能更多的则是眼界上的提升、思维上的扩展。
毕业后工作学习不断积累经验,这时再去看一些本科时期枯燥的专业课才会豁然开朗,慢慢有更多的感性认识和理性认识,所以撰写“数字信号处理基础知识”专栏的初衷即是采用“回归课本”方式加深理解理论概念,再通过实例去说明理论概念在具体项目中的应用,感性和理性层面深刻理解“底层逻辑”和“实施细节”。
首先来举例说明“线性时不变系统”的概念,阅读国内外不同版本的“数字信号处理”类书籍,发现对这个概念给出了不唯一的解释,当然这并不是核心问题,我们更应该从底层逻辑上理解其意义而不仅仅是字面上的定义。
“线性”这个术语生活中也经常会用到,直观上的感觉比如初中学的一次函数y = kx+b,自变量x和因变量y是满足线性关系的,但是这样感性认识在定义一个概念时就显得不那么准确,这里关于“线性系统”的判断有个重要的标准,则需要满足“叠加原理”,即这类的输出是各个输入分别加到该系统后所得的各个输出的叠加或求和。
我们假设一个系统为T[•],那么“线性系统”的叠加原理可以用公式化表示:
- 可加性:设 y1 (n) = T[x1 (n)],y2 (n) = T[x2 (n)],如果T[x1 (n)+x2 (n)] = T[x1 (n)] + T[x2 (n)] =y1 (n)+y2 (n),则说明系统 T[•] 满足可加性;
 - 齐次性:设 y1 (n) = T[x1 (n)] ,如果T[a1x1 (n)] = a1T[x1 (n)] = a1 y1 (n),则说明系统T[•]满足齐次性;
 
同样也举例来说明:假设对于一个离散系统,其输出定义为:y(n) = -0.5* x(n),即输出序列的振幅等于负的1/2输入序列的振幅,若输入序列x(n)表示1Hz的正弦波,采样率为每周期采样32个样本值,在这里我们用matlab来绘制其图形。
如图1所示是matlab下生成正弦波的绘图程序,当然每个工程师可能也有自己的使用习惯,这里为了便于说明我们按照x(n) = sin (2π*f0*n*ts)的格式来书写。
首先解释下程序中matlab用到的几个函数:1. sin()即正弦绘制函数;2. subplot(m,n,p) 即将当前图窗划分为 mxn 网格,并在 p 指定的位置创建坐标区,因为有2个函数x和y图形要绘制且在同一张视图下,所以m=2,n=1即绘图上下分割开,p=1代表绘图坐标在上,p=2代表绘图坐标在下;3. stem(n,x)即在 n 指定的值的位置绘制数据序列x,可以通俗理解成以n为横坐标,x为纵坐标进行绘图;4. axis([xmin xmax ymin ymax]) 即用来标注输出的图线的最大值最小值;5. xlabel(),ylabel()即标注输出的图线横纵坐标的标签值。
在这里我们设置采样周期Ts是1/32,待采波形的频率是1Hz,n = 0:64则表示从时间点0开始采样64个点,调用matlab下相关函数即可生成如图2所示的绘图,细节上可以对照图2再加深理解不过多赘述。
图1 matlab绘制x(n)和y(n)正弦采样图形的程序
图2 matlab绘制x(n)和y(n) = -0.5* x(n)正弦采样图形
类似的我们再用matlab生成序列x1(n)表示1Hz的正弦波和序列x2(n)表示3Hz的正弦波,如图3所示采样率均为每周期采样32个样本值,y(n)表示-0.5*(x1(n)+x2(n)),大家可以发现对于系统y(n) = -0.5* x(n)是满足“线性系统”的叠加原理。
图3 matlab绘制x1(n)、x2(n)、y(n) = -0.5*(x1(n)+x2(n))正弦采样图形
再来看一个例子y(n) = x2 (n),还是用大家熟知的三角函数进行推算验证,假设x(n)用来描述一个频率f0等于1Hz的正弦波序列即x(n) = sin (2π*f0*n*ts) = sin (2π*1*n*ts),若x(n)是输入序列,则系统的输出序列y(n)是1Hz正弦波的平方,即y(n) = x2 (n) = sin (2π*1*n*ts)* sin (2π*1*n*ts)。
高中数学里学过三角函数变换sinA*sinB = (1/2)[cos(A-B) - cos(A+B)],代入其中可得:
y(n) = sin(2π*1*n*ts)*sin(2π*1*n*ts)
= 1/2*[cos(2π*1*n*ts-2π*1*n*ts) - cos(2π*1*n*ts+2π*1*n*ts)]
= 1/2*[cos(0) - cos(2π*2*n*ts)]
= 1/2*[1 - cos(2π*2*n*ts)]
显然在这里我们输入x(n)是1Hz的正弦波,而输出y(n)却得到了0Hz直流成分和2Hz的正弦波混合,所以不满足“线性系统”的叠加原理,如图所示是用matlab绘制的x(n)和y(n) = x2 (n)正弦采样图形。
图4 matlab绘制x(n)和y(n) = x2 (n)正弦采样图形
“时不变系统”也有的教科书也叫“移不变系统”,顾名思义就是说系统输入序列的时间延迟会引起系统输出序列相等的时间延迟。当然也有更加书面化的表达方式,比如国内课本给出定义:若系统响应与激励加于系统的时刻无关,则系统为移不变或时不变系统,即若有 y(n) = T[x(n)],则有y(n-m) = T[x(n-m)]成立。
同样的为了有助于理解,这里也举例说明假设原始的输入序列是x(n)为振幅为1个单位、频率为1Hz的正弦波,其输出为y(n)= -0.5* x(n),那么考虑一个新的序列x`(n) = x(n+4)即x`(n)等于左移4个采样点的x(n),即x`(0) = x(4)、x`(1) = x(5)、x`(2) = x(6)等,这个系统便是时不变的,因为输出序列y`(n) = y(n)向左移4个样值,即y`(n) = y(n+4),不难发现y`(0) = y(4) 、y`(1) = y(5)、y`(2) = y(6)。
同时具有线性和时不变性的离散时间系统称为LSI系统,LSI系统也是“数字信号处理”中主要的研究对象,也许写到这里大家还不能确切地知道什么是卷积,什么是频率响应,亦或者什么是傅里叶变换,不过不必着急在后面的博客中,笔者会循循渐进层层深入,从理论推演到现实应用详细地讨论它们。
相关文章:
数字信号处理基础知识(二)
在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大…...
人生低谷来撸C#--015 C# 属性(Property)
1、概念 在C#中,属性(Property)是一种特殊的成员,它提供了一种灵活的机制来访问和修改对象的状态(即类的字段)。属性结合了字段和方法的特性,使得数据的访问和修改更加安全和便捷。下面我用一个…...
面试题003:面向对象的特征——封装性
Java规定了4种权限修饰,分别是:private、缺省、protected、public。我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。 封装性在程序中的体现: 场景1:私有化(private)类的属性,提供公共(pub…...
森林防火,森林防火智能储水罐_鼎跃安全
森林防火是保护森林的重要措施,每年发生的森林火灾都严重威胁着自然安全,对社会经济和生态造成严重的破坏。为了切实有效地预防并扑灭森林火灾,森林防火智能储水罐已成为现代森林防火体系中的重要装备。 储水罐内置传感器和控制系统ÿ…...
虚幻引擎,体积雾、体积光、镜头泛光
1、体积雾 这里介绍的是用于地面的体积雾效果,效果如图1-1: 图1-1 首先,需要场景中存在指数级高度雾并开启体积雾(如图1-2)。然后创建材质,材质域选择“体积”,混合模式选择“Additive”。材质节…...
Python 机器学习求解 PDE 学习项目——PINN 求解二维 Poisson 方程
本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解二维 Poisson 方程: 模型问题 − Δ u f in Ω , u g on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & g \quad & \text{on } \Gamma:\p…...
微信小程序删除滑块 SwiperCell 自动收起 Van weapp van-swipe-cell 滑块自动收起 点击页面也自动收起滑块
在当前页面整个 view 中 给页面绑定 点击事件bindtap"onSwipeCellPage"给 van-swipe-cell 组件设置 id (for循环可以添加 id"swip-cell-{{item.id}}" )van-swipe-cell 组件 添加属性 当用户打开滑块时触发 bind:open"swiperCel…...
【vluhub】log4j注入漏洞 CVE-2021-44228
LOG4介绍 是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布 log4j存在远程代码执行漏洞、受影响版本2.x 部署环境 攻击机环境:192.168.3.180 kail环境:192.168.203.12【NAT…...
Redis核心技术与实战学习笔记
Redis核心技术与实战学习笔记 最近想沉下心来看下redis,买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋,可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …...
力扣经典题目之->设计循环队列 的超详细讲解与实现
一:题目 二:思路讲解 前提: a:本文采取数组来实现队列去解决题目 b:开辟k1个空间,front指向队首,rear指向队尾的后一个,rear这样会更好的判空和判满 以下根据pop和push感受满和空…...
【数据结构】排序算法——Lesson2
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
Ubuntu编译ffmpeg并添加cmake工程
文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…...
Vue.js[组件(Component)]
什么是: 拥有专属的HTML,CSS,数据的,可重用的页面独立区域 一个页面由多个组件聚合而成一个大型的页面 在代码层面上,一个组件就是一个可反复使用的自定义标签。 vs jq插件 vs boot组件 boot插件: 虽然可重用,但仍需…...
基于微信小程序+SpringBoot+Vue的校园自助打印系统(带1w+文档)
基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 管理信息可以处理复杂的信息从而提高用户的工作效率,减少失误。所以本基于Vue和微信小程序的校园自助打印系统的开发非常有意义,本系…...
qt设置过滤器
1.创建事件过滤器类,在主窗口中安装事件过滤器 class PasteFilter : public QObject {Q_OBJECTpublic:PasteFilter(QObject *parent nullptr) : QObject(parent) {}protected:bool eventFilter(QObject *obj, QEvent *event) override {if (event->type() QEv…...
线上环境服务器CPU飙升排查
前因 收到线上服务器CPU使用率100%的告警信息。 环境 jdk1.8CentOS Linux ;CentOS Linux 排查 查看服务器CPU使用率 果然cpu已经达到了100%了 命令 top 使用arthas工具 使用方式 arthas 执行命令java -jar arthas-boot.jar 然后执行命令 thread 看到有两个…...
unity文字||图片模糊
一.文字模糊 1、增大字体大小后等比缩放 快捷键R 2、更改字体渲染模式 二.图片模糊 1、更改过滤模式 2、更改格式或者压缩 3、如果只是图片边缘看不清,可以增加canvas/图片的每单位参考像素...
香薰学习笔记
1 喷香水的方法 ChatGPT-4o 学习使用香水是提升个人形象的一个好方法。 喷香水的方法如下: 皮肤吸收:香水最好喷在皮肤上,因为皮肤的温度能帮助香水散发出更好的香味。喷在衣服上可能会影响香水的原始味道。脉搏点:将香水喷在脉搏…...
iOS ------ weak的基本原理
1.weak的基本概念 weak弱引用,所引用的对象的引用计数不会加一,引用对象被释放的时候会自动设置为nil多用于解决对象间的相互引用造成内存泄露的循环引用的问题 2.实现原理 Person *object [[Person alloc] init]; id __weak objc object;Runtime维…...
实时更新UI界面
1.处理实时通信,几种方案 1:当一个用户发送一条需要实时更新的信息,我可以直接查找在线用户,通过在线用户来进行判断条件,发送更新请求 2:用户在一个需要实时更新的界面时,就不断的向服务端发…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
