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

news2024/11/15 4:37:46

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

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

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

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

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

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

        “线性”这个术语生活中也经常会用到,直观上的感觉比如初中学的一次函数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系统也是“数字信号处理”中主要的研究对象,也许写到这里大家还不能确切地知道什么是卷积,什么是频率响应,亦或者什么是傅里叶变换,不过不必着急在后面的博客中,笔者会循循渐进层层深入,从理论推演到现实应用详细地讨论它们。

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

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

相关文章

python+vue3+onlyoffice在线文档系统实战20240723笔记,项目界面设计和初步开发

经过之前的学习,已经能够正常打开文档了。 目前为止,我们的代码能够实现: 打开文档编辑文档手动保存自动保存虽然功能依然比较少,但是我们已经基本实现了文档管理最核心的功能,而且我们有个非常大的优势,就是支持多人同时在线协同编辑。 现在我们要开发项目,我们得做基…

Golang | Leetcode Golang题解之第279题完全平方数

题目: 题解: // 判断是否为完全平方数 func isPerfectSquare(x int) bool {y : int(math.Sqrt(float64(x)))return y*y x }// 判断是否能表示为 4^k*(8m7) func checkAnswer4(x int) bool {for x%4 0 {x / 4}return x%8 7 }func numSquares(n int) i…

Python的注释怎么写

今天我们讲一下Python的注释怎么写,Python的注释的写法主要就是用""" (注释)"""和 #(注释(多半就是一行)) 来写 第一种: 使用""" &…

【linux】Shell脚本三剑客之sed命令的详细用法攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

从零开始:神经网络(1)——什么是人工神经网络

声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。 人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络结构和功…

【vue教程】三. 组件复用和通信(7 种方式)

目录 本章涵盖知识点回顾 组件开发与复用组件的创建和注册全局定义局部定义单文件组件(.vue 文件)组件的注册方式在实例中注册在 Vue 中注册 组件的 props定义 props传递 props 组件事件自定义事件的创建和触发父组件监听子组件事件父组件处理事件 Vue 实…

网格布局 HTML CSS grid layout demo

文章目录 页面效果代码 (HTML CSS)参考 页面效果 代码 (HTML CSS) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

Golang | Leetcode Golang题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; func hIndex(citations []int) int {n : len(citations)return n - sort.Search(n, func(x int) bool { return citations[x] > n-x }) }

你了解GD32 MCU上下电要求吗

你了解GD32 MCU的上下电要求吗&#xff1f;MCU的上下电对于系统的稳定运行非常重要。 以GD32F30X为例&#xff0c;上电/掉电复位波形如如下图所示。 上电过程中&#xff0c;VDD/VDDA电压上电爬坡&#xff0c;当电压高于VPOR&#xff08;上电复位电压&#xff09;MCU开始启动&a…

设计测试用例的具体方法

一.等价类 等价类分为: 1.有效等价类 [6~15] 2.无效等价类 :小于6位,大于15位(不在数据范围内) 组合规则: 有效等价类组合的时候,尽可能一条测试用例尽可能多的覆盖有效等价类 无效等价类组合的时候,一条测试点,之恶能覆盖一个无效等价类 二.边界值 1.上点,离点,内点 上…

科技引领水资源管理新篇章:深入剖析智慧水利解决方案,展现其在提升水资源利用效率、优化水环境管理方面的创新实践

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

git clone超时的解决方法

问题描述&#xff1a;在克隆一个仓库的时候&#xff0c;报错如下 git clone https://github.com/TeamWiseFlow/wiseflow.git Cloning into wiseflow... fatal: unable to access https://github.com/TeamWiseFlow/wiseflow.git/: Failed to connect to github.com port 443 aft…

【PyTorch】图像二分类项目

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 【PyTorch】图像多分类项目 【PyTorch】图像多分类项目部署 图像分类是计算机视觉中的一项重要任务。在此任务中&#xff0c;我们假设每张图像只包含一个主对象。在这里&#xff0c;我们的目标是对主要对象进行分类。…

C#开源、简单易用的Dapper扩展类库 - Dommel

项目特性 Dommel 使用 IDbConnection 接口上的扩展方法为 CRUD 操作提供了便捷的 API。 Dommel 能够根据你的 POCO 实体自动生成相应的 SQL 查询语句。这大大减少了手动编写 SQL 代码的工作量&#xff0c;并提高了代码的可读性和可维护性。 Dommel 支持 LINQ 表达式&#xff…

论文阅读——Integrated Diffusive Antenna Array of Low Backscattering

文章目录 摘要一、背景介绍二、天线结构A. 缝隙天线B. 低频扩散单元C. 高频扩散单元D. 集成设计 三、验证总结 论文来源&#xff1a;https://ieeexplore.ieee.org/document/10309141 摘要 文章提出了一种低雷达散射截面&#xff08;RCS&#xff09;的扩散天线阵列。 作为示例…

axios请求大全

本文讲解axios封装方式以及针对各种后台接口的请求方式 axios的介绍和基础配置可以看这个文档: 起步 | Axios中文文档 | Axios中文网 axios的封装 axios封装的重点有三个&#xff0c;一是设置全局config,比如请求的基础路径&#xff0c;超时时间等&#xff0c;第二点是在每次…

【数据结构】二叉树——顺序结构——堆及其实现

一、树 1.1、树的概念和结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限节点组成的一个具有层次关系的集合。 树有一个特殊的节点&#xff0c;称为根节点&#xff0c;根节点没有前驱结点。 除根节点外&#xff0c;其余部分被分为M&…

Mysql - 索引

目录 一、存储引擎 二、索引 索引结构 索引分类 索引语法 联合索引 前缀索引 索引使用规则 最左前缀法则 范围查询使索引失效 字段做运算操作索引失效 字符串字段不加单引号索引失效 字段做前模糊查询索引失效 or连接条件索引失效 数据发布情况索引失效 指定使用…

Matlab编程资源库(1)选择结构

一、if语句 在 MATLAB 中&#xff0c; if 语句有 3 种格式。 (1) 单分支 if 语句&#xff1a; if 条件 语句组 end 当条件成立时&#xff0c;则执行语句组&#xff0c;执行完之后&#xff0c; 继续执行 if 语句的后继语句&#xff0c;若条件不成 立&#xff0c;则直接执…

什么是PCB流锡槽焊盘/C型焊盘,如何设计?-捷配笔记

在PCB进行机器组装器件时&#xff08;如波峰焊&#xff09;&#xff0c;为了防止部分需要二次焊接的元器件的焊盘堵孔&#xff0c;就需要在PCB焊盘上面开个过锡槽&#xff0c;以便过波峰焊时&#xff0c;这些焊锡会流掉。开流锡槽就是在焊盘裸铜&#xff08;敷锡&#xff09;部…