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

数字信号处理教程(2)——时域离散信号与时域离散系统

   上回书说到数字信号处理中基本的一个通用模型框架图。今天咱们继续,可以说今天要讲的东西必须是学习数字信号处理必备的观念——模拟与数字,连续和离散。


时域离散序列
   由于数字信号基本都来自模拟信号,所以先来谈谈模拟信号。模拟信号就是常说的连续时域信号,在时间上和幅度上都是连续的,也就是在任何的时刻其都是有值的且值有意义。像日常生活中就有很多连续信号的例子,有温度、压力、水位、化学浓度、电压与电流、位置、速度、加速度、力与扭矩等。如果信号仅在离散时间点上取值有效,这样的信号被称为时域离散信号,也称离散时间信号,用x(n)表示,其中变量n是整数值并在时间上代表一些离散时刻,在咱们的MATLAB里面其实简单的一维数组近似就能看成一个离散时间序列。产生离散时间序列的方法,就是采样。举个例子:xₐ=sin(t)表示一个正弦信号,它也是一个连续时间信号。如果对这个信号每隔tₐ时间间隔取一个样点,可表示成x(n)=xₐ(t)|ₜ₌ₙₜₐ=sin(ntₐ)。
    接下来,介绍一下一些基本的序列。
    单位取样序列δ(n)是最简单也是使用最多的序列之一,仅在n=0时,其值为1,其他各值均为0。它类似于模拟信号中的单位冲激函数δ(t),不同的是δ(t)在t=0时,取值无穷大。单位取样序列和单位冲激函数如图所示。

   单位阶跃序列u(n)在n≥0时,其值为1;在n<0时,其值为0。和阶跃函数差不多。阶跃函数和冲激函数的关系——u(t)求导是δ(t);映射到离散当中,微分对应的是差分,所以二者关系可以如下图概括。

δ(n)与u(n)之间的关系


    至于其他的就简单说一下,像矩形序列Rɴ(n)实际上就跟门函数差不多,也可以写成
u(n)-u(n-N),或者是冲激序列的叠加。还有正余弦序列、指数序列这些就不多说了。这里值得大家注意的是所有的序列都能表示成冲激序列的线性组合,而在连续当中,我们绝大多数的情况下用的则是阶梯信号做的近似,实际上两者的意思差不多。满足等式x(n)=x(n+N)(N为正整数)的序列称为周期序列。用这个条件来检验离散时间余弦(或正弦)序列的周期性,即Acos(ωₒn+φ)=Acos[ωₒ(n+N)+φ],不难求出ωₒN=2πk,式中k为整数,也可写成N=2πk/ωₒ,下面讨论N的几种可能情况:周期序列通常分成三种不同的序列。1、当2π/ωₒ为整数时,k=1,则2π/ωₒ即为正弦序列的周期。2、当2π/ωₒ为非整数,但它是一个有理数时,设2π/ωₒ=M/N,其中M和N是互为素数的整数,这时,取k=M,则M为正弦序列的周期。3、当2π/ωₒ为无理数时,此正弦序列为非周期序列。


序列的运算
(一)信号相加
     两个信号相加要求长度必须相同。如果两个序列长度不同或者长度相同,但是样本位置不同,也不能相加。可将序列增加若干零值延长,使得序列长度相等且样本位置一致。
(二)信号相乘
     信号相乘即两个信号位置相同处的数值相乘,原理与信号相加类似,这里不再举例说明。
(三)信号移位
     序列y(n)与x(n)的关系表示为y(n)=x(n-k),其中k为整数。当k>0时,表示序列y(n)是将x(n)向右平移k个单位的结果;当k<0时,表示序列y(n)是将x(n)向左平移k个单位的结果。
(四)信号尺度变换
      信号y(n)与x(n)的关系用公式y(n)=x(mn)表示,其中m取整数,表示每隔m单位取一个样本。当然啦,如果说m<0的话,我们就应该要经历反褶这个操作,先后顺序无所谓,全看个人习惯。我一般都是先反褶,在尺度变换。


离散时间系统
    说完了离散时间序列,接下来看看离散时间系统,我们通常用T[.]来表示系统函数,输入信号用x(n)表示,输出信号用y(n)表示,它们之间的关系可描述为y(n)=T[x(n)]。
一、线性系统
    若某个系统的输入信号和输出信号分别用x1(n)和y1(n)来表示,它们之间的关系描述成y1(n)=T[x1(n)]。同理,该系统的输入信号为x2(n)时,输出信号可表示成y2(n)=T[x2(n)],输入信号为ax1(n)+bx2(n)时,输出信号可表示成y(n)=T[ax1(n)+bx2(n)]。当y(n)与y1(n)及y2(n)满足等式y(n)=ay1(n)+by2(n)时,该系统称为线性系统。说的通俗点,看见线性两个字,咋就应该往齐次性和可加性这两方面去想。
二、时不变系统
     当输入信号为x(n)时,输出信号用y(n)表示。如果输入为x(n-n0),输出为y(n-n0),即y(n-n0)=T[x(n-n0)],这时,称该系统为时不变系统,此外,我认为由于离散序列多与位的运算有关,我们通常还称其为移不变系统。这里总得来说,信号波形与起点无关。
三、因果系统
    如果系统n时刻的输出只与n时刻及以前的输入有关,而与n时刻之后的输入无关,这样的系统称为因果系统。在线性时不变系统中,当n<0时,单位脉冲响应h(n)=0,该系统是因果系统。同样,当一个序列在n<0时,它的数值均为0,则该序列称为因果序列。


常系数差分方程
    接下来看看常系数差分方程,实际与常系数微分方程解法差不多,就是用的数据不一样,毕竟一个是连续的,还有一个是离散的。微分方程我们通常要用拉氏变换的方法来求,而这里就要用Z变换方法来求,因为拉氏变换离散之后它就是Z变换。这里之后再讲现在就不多说了。

   线性常系数差分方程的求解方法可归纳为下面三种:
 (1)经典解法。这类方法类似模拟系统中求微分方程的解法,过程较复杂,简单的说说,其实就是求齐次解和特解,将特解带入差分方程求得它的待定系数,然后将齐次解和特解相加,带入到差分方程当中去,结合边界条件,求得齐次解的系数,而这一结合就是完全解了。
 (2)递推法。此方法简单,适用于计算机求解,这个方法说的高大上,要用递归算法,其实就跟我们高中学的等比数列差不多。
 (3)变换域法。将时域转换到z域中求解,方法简单易行,当起始状态为零的情况,所得到就是零状态解;当输入为零的时候,就是零输入响应了。之后将详细说明。


AD转换与DA转换    

    要通过数字方法处理模拟信号,有必要先将它们转换成数字形式,即转换成具有有限精度的数字序列,这一过程称为模数(A/D)转换,而相应的设备称为A/D转换器(ADC)。下图为AD转换器的基本框架。

AD模型图

大概以下几个步骤:
 (1)采样:采样是连续时间信号到离散时间信号的转换过程,通过对连续时间信号在离散时间点处取样本值获得。因此,如果xₐ(n)是采样器的输入,那么输出是xₐ(nT)=x(n),其中T称为采样间隔,这个是采样最基本的操作,每隔T个位置取个数,当然还有非均匀采样,这里不说了,以后再说。
 (2)量化:量化是离散时间连续值信号转换到离散时间离散值(数字)信号的过程。每个信号样本值是从可能值的有限集中选取的。未量化样本x(n)和量化输出xₚ(n)之间的差称为量化误差。
 (3)编码:在编码过程中,每一个离散值xₚ(n)由b位的二进制序列表示。
    在实际应用的很多场合(例如,语音处理),需要将处理的数字信号转化成模拟信号。将数字信号转化成模拟信号的过程是熟知的数模(D/A)转换。所有D/A转换器通过执行某种插值操作将数字信号的各离散点连接起来,其精度依赖于D/A转换过程的质量。
    对模拟信号采样有很多方式。在实际中最常使用的采样类型,即周期采样或均匀采样。可以由下列关系式描述:x(n)=xₐ(nT),式中,x(n)是通过对模拟信号xₐ(t)每隔T(s)取样本值获得的离散时间信号。这一过程,在两个连续的样本之间的时间间隔T称为采样周期或采样间隔,其倒数1/T=Fs称为采样率(样本数/s)或采样频率(Hz)。奈奎斯特采样定理常说,为了能够从采样后的离散信号中完全恢复原始的连续信号,采样频率必须大于等于原始信号最高频率的两倍。因此,这里还需要知道两个概念——过采样和欠采样。过采样指的是对少数类样本进行多次重复采样,使得少数类样本的数量增加,从而使得各类别样本数量相对平衡。过采样可以通过随机复制少数类样本,或者使用更复杂的算法生成新的少数类样本来实现。欠采样则是从多数类样本中随机选择一部分样本,使得多数类样本数量减少,从而达到各类别样本数量相对平衡的目的。但欠采样可能会丢失一些多数类样本中的信息。因此,在工程当中多采用的是过采样。

     欲知后事如何,且听下回分解。OVO.......

相关文章:

数字信号处理教程(2)——时域离散信号与时域离散系统

上回书说到数字信号处理中基本的一个通用模型框架图。今天咱们继续,可以说今天要讲的东西必须是学习数字信号处理必备的观念——模拟与数字,连续和离散。 时域离散序列 由于数字信号基本都来自模拟信号,所以先来谈谈模拟信号。模拟信号就是…...

imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

1.应用层如何操控PWM: 与 LED 设备一样, PWM 同样也是通过 sysfs 方式进行操控,进入到/sys/class/pwm 目录下 这里列举出了 8 个以 pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了…...

等保2.0 实施方案

一、引言 随着信息技术的广泛应用,网络安全问题日益突出,为确保信息系统安全、稳定、可靠运行,保障国家安全、公共利益和个人信息安全,根据《网络安全法》及《信息安全技术 网络安全等级保护基本要求》(等保2.0&#x…...

7/3 第六周 数据库的高级查询

...

ubuntu20.04安装kazam桌面屏幕录制工具

在Ubuntu 20.04上安装Kazam可以通过以下步骤进行: 1.打开终端:可以通过按下Ctrl Alt T组合键来打开终端。 2.添加PPA源:Kazam不再在官方Ubuntu仓库中,但可以通过PPA源进行安装。在终端中输入以下命令来添加PPA: su…...

Python应对反爬虫的策略

Python应对反爬虫的策略 概述User-Agent 伪造应对302重定向IP限制与代理使用Cookies和Session管理动态内容加载数据加密与混淆请求频率限制爬虫检测算法法律与道德考量结语 概述 在数字化时代,网络数据采集已成为获取信息的重要手段之一。然而,随着技术…...

240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类

KNN(K近邻)算法实现红酒聚类 K近邻算法,是有监督学习中的分类算法,可以用于分类和回归,本篇主要讲解其在分类上的用途。 文章目录 KNN(K近邻)算法实现红酒聚类算法原理数据下载数据读取与处理模型构建--计算距离模型预测 算法原理 KNN算法虽…...

keil5模拟 仿真 报错没有读写权限

debug*** error 65: access violation at 0x4002100C : no write permission 修改为: Dialog DLL默认是DCM3.DLL Parameter默认是-pCM3 应改为 Dialog DLL默认是DARMSTM.DLL Parameter默认是-pSTM32F103VE...

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号) 文章目录 力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)一、78. 子集二、105. 从前序与中序遍历序列构造二叉树三、43. 字符串相乘四、155. …...

高薪程序员必修课-Java中 Synchronized锁的升级过程

目录 前言 锁的升级过程 1. 偏向锁(Biased Locking) 原理: 示例: 2. 轻量级锁(Lightweight Locking) 原理: 示例: 3. 重量级锁(Heavyweight Locking)…...

Vue项目打包上线

Nginx 是一个高性能的开源HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它在设计上旨在处理高并发的请求,是一个轻量级、高效能的Web服务器和反向代理服务器,广泛用于提供静态资源、负载均衡、反向代理等功能。 1、下载nginx 2、…...

算法题中常用的C++功能

文章目录 集合优先队列双端队列排序时自定义比较函数最大数值字符串追加:删除:子串: 元组vector查找创建和初始化赋值: 字典map引入头文件定义和初始化插入元素访问元素更新元素删除元素检查元素存在遍历元素int和string转换 集合…...

左扰动和右扰动

在SLAM(Simultaneous Localization and Mapping)中,使用左扰动还是右扰动主要取决于你如何定义坐标系和你希望扰动影响的姿态表示。这通常与你的坐标系选择和你正在解决的具体问题有关。 左扰动通常用于以下情况: 当你使用局部坐…...

【计算机网络】期末复习(2)

目录 第一章:概述 第二章:物理层 第三章:数据链路层 第四章:网络层 第五章:传输层 第一章:概述 三大类网络 (1)电信网络 (2)有线电视网络 &#xff0…...

ojdbc8-full Oracle JDBC 驱动程序的一个完整发行版各文件的功能

文章目录 1. ojdbc8.jar2. ons.jar -3. oraclepki.jar -4. orai18n.jar -5. osdt_cert.jar -6. osdt_core.jar -7. ojdbc.policy -8. README.txt -9. simplefan.jar -10. ucp.jar -11. xdb.jar - ojdbc8-full 是 Oracle JDBC 驱动程序的一个完整发行版,包含了连接和…...

在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。

在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。这通常是因为sqlite3在默认情况下会对空表进行“延迟创建”,即在实际需要写入数据之前,表不会被真正创建…...

【目标检测】DINO

一、引言 论文: DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 作者: IDEA 代码: DINO 注意: 该算法是在Deformable DETR、DAB-DETR、DN-DETR基础上的改进,在学习该算法前&#…...

一文包学会ElasticSearch的大部分应用场合

ElasticSearch 官网下载地址:Download Elasticsearch | Elastic 历史版本下载地址1:Index of elasticsearch-local/7.6.1 历史版本下载地址2:Past Releases of Elastic Stack Software | Elastic ElasticSearch的安装(windows) 安装前所…...

创建kobject

1、kobject介绍 kobject的全称是kernel object,即内核对象。每一个kobject都会对应系统/sys/下的一个目录。 2、相关结构体和api介绍 2.1 struct kobject // include/linux/kobject.h 2.2 kobject_create_and_add kobject_create_and_addkobject_createkobj…...

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构,是一种非线性结构。 非线性结构:在二叉树中&#x…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...