离散时间系统模型

离散时间系统模型

        离散时间系统模型是表示数字滤波器的方案。MATLAB® 科学计算环境支持若干种离散时间系统模型,这些模型将在以下章节中介绍:

  1. ​传递函数
  2. 零极点增益
  3. 状态空间
  4. 部分分式展开式(残差形式)
  5. 二阶节 (SOS)
  6. 格型结构体
  7. 卷积矩阵

传递函数

      传递函数是数字滤波器的一种基本 Z 域表示,它将滤波器表示为两个多项式的比值。它是此工具箱的主要离散时间模型。数字滤波器的差分方程的 Z 变换的传递函数模型说明如下

       此处,常量 b(i) 和 a(i) 是滤波器系数,滤波器的阶数是 n 和 m 的最大值。在 MATLAB 环境中,您将这些系数存储在两个向量中(按照惯例是行向量),一个行向量用于分子,一个行向量用于分母。有关传递函数形式的详细信息,请参阅滤波器和传递函数。

零极点增益

传递函数的分解形式(又称为零极点增益形式)为

       按照惯例,多项式系数存储在行向量中,多项式根存储在列向量中。因此,在零极点增益形式中,传递函数的分子和分母的零点和极点位置位于列向量中。分解传递函数增益 k 是 MATLAB 标量。

poly 和 roots 函数在多项式表示和零极点增益表示之间转换。例如,一个简单 IIR 滤波器如下

b = [2 3 4];
a = [1 3 3 1];

此滤波器的零点和极点是

q = roots(b)
p = roots(a)
% Gain factor
k = b(1)/a(1)

回到最初的多项式,

bb = k*poly(q)
aa = poly(p)

请注意,本例中的 b 和 a 表示传递函数:

       对于 b = [2 3 4]roots 函数会缺失 z 等于 0 时的零点。事实上,只要输入传递函数的极点数多于零点数(或相反),该函数都会缺失 z 等于 0 时的极点和零点。这在大多数情况下是可以接受的。然而,为了避免此问题,请在使用 roots 函数之前,直接追加零以使向量长度相同;

 例如,b = [b 0]

状态空间

      将数字滤波器或差分方程组表示为一组一阶差分方程组始终是可能的。在矩阵或状态空间形式中,您可以将公式写为

,

其中 u 是输入,x 是状态向量,而 y 是输出。对于单通道系统,A 是 m×m 矩阵,其中 m 是滤波器的阶数,B 是列向量,C 是行向量,D 是标量。对于输入 u 和输出 y 成为向量、BC 和 D 成为矩阵的多通道系统,状态空间表示法尤其方便。

       状态空间表示很容易扩展到 MATLAB 环境。ABC 和 D 是矩形数组;MATLAB 函数将它们分别视为单个变量。

对状态空间方程进行 Z 变换并将其组合,表明状态空间形式和传递函数形式的等效性:

       如果您不熟悉线性系统的状态空间表示,不要担心。一些滤波器设计算法在内部使用状态空间形式,但无需了解任何状态空间概念即可成功使用它们。不过,如果您的应用大量使用基于状态空间的信号处理,请了解 Control System Toolbox™ 产品,以获得全面的状态空间工具库。

部分分式展开式(残差形式)

每个传递函数还具有对应的部分分式展开(又称为残差形式),如下式所示

前提是 H(z) 没有重复的极点。此处,n 是有理传递函数 b(z)/a(z) 的分母多项式的次数。如果 r 是重极点 sr,则 H (z) 具有以下形式的项:

       Signal Processing Toolbox™ 中的 residuez 函数用于将传递函数转换为部分分式展开式形式,或者反之。residuez 末尾的“z”表示 z 域或离散域。residuez 以列向量 p 形式返回极点,以列向量 r 形式返回极点对应的残差,以行向量 k 形式返回原始传递函数的任何不恰当部分。如果两个极点的差值的模小于任一极点的模的 0.1%,则 residuez 确定这两个极点相同。

部分分式展开式在信号处理中以一种求传递函数的逆 Z 变换的方法出现。例如,下式

的部分分式展开式是

b = [-4 8];
a = [1 6 8];
[r,p,k] = residuez(b,a)

它对应于

要想求出 H(z) 的逆 Z 变换,可以求 H(z) 的两个加数的逆 Z 变换之和,这可给出因果冲激响应:

要在 MATLAB 环境中验证这一点,请键入

imp = [1 0 0 0 0];
resptf = filter(b,a,imp)
respres = filter(r(1),[1 -p(1)],imp)+...filter(r(2),[1 -p(2)],imp)

二阶节 (SOS)

任何传递函数 H(z) 都有二阶节表示

其中 L 是描述系统的二阶节的数量。MATLAB 环境将离散时间系统的二阶节形式表示为 L×6 数组 sossos 的每行包含一个二阶节,其中行元素是描述该二阶节的三个分子和三个分母系数。

       有许多方法以二阶节形式表示滤波器。通过仔细对极点和零点对组进行配对、对级联中的各节进行排序以及对各节进行乘性定标,可以在某些定点滤波器实现中降低量化噪声增益并避免溢出。Linear System Transformations 中所述的函数 zp2sos 和 ss2sos 用于执行零极点配对、节缩放和节排序。

注意

所有 Signal Processing Toolbox 二阶节变换仅适用于数字滤波器。

格型结构体

对于由多项式系数 a(n) 说明的离散的 N 阶全极点或全零滤波器,n = 1,2...,N+1,有 N 个对应的格型结构体系数 k (n),n = 1,2...,N。参数 k (n) 也称为滤波器的反射系数。给定这些反射系数,您可以实现如下所示的离散滤波器。

FIR 和 IIR 格型滤波器结构图

对于由多项式系数 a 和 b 说明的一般零极点 IIR 滤波器,分母 a 有格型系数 k (n),分子 b 有阶梯系数 v (n)。格型/梯形滤波器可以实现为

格型/梯形滤波器示意图

工具箱函数 tf2latc 接受多项式形式的 FIR 或 IIR 滤波器,并返回对应的反射系数。多项式形式的 FIR 滤波器的一个示例是

b = [1.0000   0.6149   0.9899   0.0000   0.0031  -0.0082];

此滤波器的格型(反射系数)表示为

k = tf2latc(b)

对于 IIR 滤波器,反射系数的幅值提供简单的稳定性检查。如果对应于一个多项式的所有反射系数的量级都小于 1,则该多项式的所有根都在单位圆内。例如,假设某 IIR 滤波器具有上述分子多项式 b 和如下的分母多项式:

a = [1 1/2 1/3];

则该滤波器的格型表示为

[k,v] = tf2latc(b,a);  

对于 k 中的所有反射系数,abs(k) < 1,因此该滤波器是稳定的。

函数 latc2tf 根据滤波器的格型(反射)系数计算滤波器的多项式系数。给定反射系数向量 k,对应的多项式形式为

b = latc2tf(k);

格型或格型/梯形系数可用于使用函数 latcfilt 实现滤波器。

卷积矩阵

在信号处理中,对两个向量或矩阵求卷积等效于用一个输入操作数对另一个输入操作数进行滤波。这种关系支持将数字滤波器表示为卷积矩阵

给定任意向量,工具箱函数 convmtx 生成一个矩阵,该矩阵与另一个向量的内积等于这两个向量的卷积。生成的矩阵表示一个数字滤波器,您可以将其应用于适当长度的任何向量;操作数的内部维度必须一致才能计算内积。

表示数字滤波器分子系数的向量 b 的卷积矩阵为

b = [1 2 3];
x = randn(3,1);
C = convmtx(b',3);

求 b 与 x 的卷积的两种等效方法如下。

y1 = C*x;
y2 = conv(b,x);

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初始MySQL(二)(表的增删查改)

目录 修改表 CRUD(增删改查) insert语句(表中增加数据) update语句(修改表中的数据) delete删除语句 select语句 修改表 添加列 ALTER TABLE tablename ADD (column datatype [DEFAULT expr] [, column datatype] ...); 修改列 ALTER TABLE tablename MODIFY (column …

【大模型】大语言模型语料下载

文章目录 概述Hugging Faceobs操作git-lfs例子RedPajama-Data-1TSlimPajama-627B/git clone续传 数据格式参考资料 概述 大模型训练中语料是非常重要的&#xff0c;目前公网上有各种各样的语料可以供下载&#xff0c;但是不可能每个用户、每次训练任务都通过公网去拉取语料&am…

STL简介+浅浅了解string——“C++”

各位CSDN的uu们好呀&#xff0c;终于到小雅兰的STL的学习了&#xff0c;下面&#xff0c;让我们进入CSTL的世界吧&#xff01;&#xff01;&#xff01; 1. 什么是STL 2. STL的版本 3. STL的六大组件 4. STL的重要性 5. 如何学习STL 6.STL的缺陷 7.为什么要学习string类 …

人物百科怎么创建?教你如何创建人物百度百科注意以下方式技巧!

百科就像互联网上的名片&#xff0c;不仅代表身份&#xff0c;而且拥有极高的可信度。因此&#xff0c;许多名人都希望利用百科提高自己的知名度。任何人都可以编辑人物百科词条&#xff0c;但为了成功上传&#xff0c;需要一些技巧。以下是小媒同学给大家带来的人物百科快速创…

Kotlin Multiplatform稳定版本发布:加速跨平台开发的新里程碑

Kotlin Multiplatform稳定版本发布&#xff1a;加速跨平台开发的新里程碑 引言 在最新的消息中&#xff0c;JetBrains团队宣布Kotlin Multiplatform&#xff08;KMP&#xff09;将于2023年10月稳定发布。这一消息对于广大开发者来说毫无疑问是一个令人振奋的消息。KMP的正式生…

关于pip basicsr,facexlib,realesrgan et al.安装报错。

首先basicsr是一个超分的库&#xff0c;在ubuntu系统上pip时会报错。 上图这种错误&#xff0c;或者其他的错误&#xff0c;有的方法让去github上安装&#xff0c;那种方法到setup.py的时候也会报错。 问题在于首先 -i的源要换成阿里的源&#xff0c;然后要安装他要求的库&…

【Git】gui图形化界面的使用、ssh协议以及idea集成Git

目录 gui图形化界面的使用 介绍 特点 gui图形的使用 ssh协议 介绍 步骤及概念 ssh协议的使用 配置公钥 idea集成Git idea配置git IDEA安装gitee IDEA中登入Git ​编辑 项目分享 克隆分享的项目 ​编辑 ​编辑 idea上传远程 gui图形化界面的使用 介绍 GUI&#xff08…

消息队列之初识Rabbit及安装

文章目录 一、MQ的相关概念1.什么是MQ&#xff1f;2.为什么要用MQ2.1流量消峰2.2应用解耦2.3异步处理 3.MQ 的分类3.1.ActiveMQ3.2.Kafka3.3.RocketMQ3.4.RabbitMQ 4.MQ 的选择4.1.Kafka4.2.RocketMQ4.3.RabbitMQ 二、RabbitMQ的相关概念1.四大核心概念2.RabbitMQ 核心部分3.Ra…

Flutter 实战:构建跨平台应用

文章目录 一、简介二、开发环境搭建三、实战案例&#xff1a;开发一个简单的天气应用1. 项目创建2. 界面设计3. 数据获取4. 实现数据获取和处理5. 界面展示6. 添加动态效果和交互7. 添加网络错误处理8. 添加刷新功能9. 添加定位功能10. 添加通知功能11. 添加数据持久化功能 《F…

基于springboot实现沁园健身房预约管理系统【项目源码】计算机毕业设计

基于springboot实现沁园健身房预约管理系统演示 B/S架构 B/S结构是目前使用最多的结构模式&#xff0c;它可以使得系统的开发更加的简单&#xff0c;好操作&#xff0c;而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库&#xff0c;和一些很常用的浏览器就可以…

JS+ES6新增字符串方法大汇总,爆肝,共四十七种方法(求个赞,哈哈)

让我为大家介绍一下字符串的操作方法吧&#xff0c;你知道与不知道的大部分都在这&#xff01; 分类可能有点不太对&#xff0c;还请大家见谅&#xff01; 增 1.concat() 拼接字符串 可以连接两个或多个字符串 let str "hello"let str1 " str"console…

node插件MongoDB(三)—— 库mongoose 的使用和数据类型(一)

前言 提示&#xff1a;使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档&#xff1a;http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码&#xff08;连接mongodb 服务&#xff09;3.…