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

数字信号处理基础知识(二)

        在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大家在后期的工程应用中会有更多启发价值。

       这里不由地多写一些题外话,可能会引起不少朋友共鸣,笔者读高中时学化学和生物,依稀记得高中比初中的内容要深很多并且老师上课讲得很快,一时间灌入很多概念和公式,那时也没有现在这么多一对一辅导补课,都是传统大班教育,老师上课讲过布置作业,课后同学买练习册刷题巩固,但是这样的学习方式延续到高三就较为吃力,特别是生物感到很多东西都见过,考试时成绩却很不好。

       这时生物老师告诉了一个方法叫“回归课本”,于是笔者在高三中期少刷题、多看书。因为刷题见了很多概念上的应用,再回过头看书上的概念,一些模糊的知识点就慢慢清晰了,坚持下来到高三后期化学和生物成绩就提高很快,会发现虽然题型在不断变化,但是都在那些知识点中来回变换。

       一晃眼已经硕士毕业工作六年了,有时回想起高中和本科学习过程,真的也会感到很多似曾相识,比如本科学习一个专业,学校会给开设很多门专业课,但是大部分只在学习理论概念,为了保研考研大家又要延续了高中时期的苦学精神,但是即便笔试和上机成绩很好,面对现实项目又不知所学专业知识的具体应用在哪里,大学老师通常也只是就课本概念问题给予一些解答,所以说本科学习可能更多的则是眼界上的提升、思维上的扩展。

       毕业后工作学习不断积累经验,这时再去看一些本科时期枯燥的专业课才会豁然开朗,慢慢有更多的感性认识和理性认识,所以撰写“数字信号处理基础知识”专栏的初衷即是采用“回归课本”方式加深理解理论概念,再通过实例去说明理论概念在具体项目中的应用,感性和理性层面深刻理解“底层逻辑”和“实施细节”。

       首先来举例说明“线性时不变系统”的概念,阅读国内外不同版本的“数字信号处理”类书籍,发现对这个概念给出了不唯一的解释,当然这并不是核心问题,我们更应该从底层逻辑上理解其意义而不仅仅是字面上的定义。

        “线性”这个术语生活中也经常会用到,直观上的感觉比如初中学的一次函数y = kx+b,自变量x和因变量y是满足线性关系的,但是这样感性认识在定义一个概念时就显得不那么准确,这里关于“线性系统”的判断有个重要的标准,则需要满足“叠加原理”,即这类的输出是各个输入分别加到该系统后所得的各个输出的叠加或求和。

我们假设一个系统为T[•],那么“线性系统”的叠加原理可以用公式化表示:

  1. 可加性:设 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[•] 满足可加性;
  2. 齐次性:设 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…...

森林防火,森林防火智能储水罐_鼎跃安全

森林防火是保护森林的重要措施,每年发生的森林火灾都严重威胁着自然安全,对社会经济和生态造成严重的破坏。为了切实有效地预防并扑灭森林火灾,森林防火智能储水罐已成为现代森林防火体系中的重要装备。 储水罐内置传感器和控制系统&#xff…...

虚幻引擎,体积雾、体积光、镜头泛光

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:用户在一个需要实时更新的界面时,就不断的向服务端发…...

英文论文降AIGC教程:2026最新实测3款工具与逻辑重塑避坑指南

赶稿季来临,英文长稿的AI率到底该怎么降?不少同学愁的头都要秃了,不要再一个词一个词的扣了,这不仅慢,还会把好好的学术英语改得支离破碎。 坦率的讲,真正聪明的降ai,绝对不是机械替换&#xf…...

TradingView-ML-GUI:量化交易者的机器学习策略可视化实验平台

1. 项目概述:一个为交易者打造的机器学习图形界面 如果你是一个对量化交易和机器学习都感兴趣的开发者或交易员,大概率遇到过这样的困境:你有一个绝佳的交易策略想法,也懂一些机器学习模型,但每次想验证一个想法&…...

终极django-htmx性能优化指南:如何减少网络请求并提升用户体验 [特殊字符]

终极django-htmx性能优化指南:如何减少网络请求并提升用户体验 🚀 【免费下载链接】django-htmx Extensions for using Django with htmx. 项目地址: https://gitcode.com/gh_mirrors/dj/django-htmx django-htmx是连接Django框架与现代前端交互库…...

DSP架构设计与低功耗优化关键技术解析

1. DSP架构基础与性能挑战数字信号处理器(DSP)与传统微控制器在架构设计上存在本质差异。微控制器主要面向控制任务——处理输入数据、做出决策并调整输出设备状态,而DSP的核心使命是维持连续数据流的高效处理。这种差异直接体现在硬件架构的…...

零知识证明与法律科技融合:构建可验证计算驱动的自动化合约执行系统

1. 项目概述与核心价值最近在开源社区里,一个名为Sheygoodbai/vericlaw的项目引起了我的注意。乍一看这个项目名,可能会觉得有些抽象,但深入探究后,我发现它触及了当前一个非常前沿且充满潜力的交叉领域:如何利用可验证…...

百度网盘下载加速解决方案:3步获取真实下载链接实现高速下载

百度网盘下载加速解决方案:3步获取真实下载链接实现高速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 对于技术爱好者和开发者来说,百度网盘下载…...

2026年3月 电子学会青少年软件编程机器人技术六级等级考试试卷真题【理论综合】

答案和更多内容请查看网站:【试卷中心 ----->电子学会 ---->机器人技术 ----> 六级】 网站链接 青少年软件编程历年真题模拟题实时更新 2026年3月电子学会青少年机器人技术(六级)等级考试试卷 一、单选题 第 1 题 TCP/IP四…...

网盘直链下载助手:一键获取九大网盘真实下载链接的终极指南

网盘直链下载助手:一键获取九大网盘真实下载链接的终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...

Silvaco TCAD新手必看:迁移率模型到底怎么选?从CONMOB到ANALYTIC的保姆级指南

Silvaco TCAD迁移率模型选择指南:从理论到实践的完整决策框架 半导体器件仿真中,迁移率模型的选择往往让初学者感到无从下手。我第一次接触Silvaco TCAD时,面对CONMOB、ANALYTIC、KLAASSEN等十几种模型选项,花了整整两周时间才弄明…...

AI原生开发流程重构:如何用1套标准流程降低76%模型迭代延迟?(基于奇点大会实测数据)

更多请点击: https://intelliparadigm.com 第一章:AI原生开发流程重构:2026奇点智能技术大会方法论发布 在2026奇点智能技术大会上,全球首个面向生产级AI应用的端到端开发范式正式发布——“AI原生开发流程”(AI-Nati…...