《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 2223|回复: 0
收起左侧

[样章] 滤波器的信号流图结构及解法

[复制链接]
发表于 2014-7-10 13:12:11 | 显示全部楼层 |阅读模式
本帖最后由 zhanggx 于 2014-7-10 15:00 编辑

6.2  滤波器的信号流图结构及解法
6.2.1  信号流图
第2章图2.2.2的6种算法中当时已归结为4种,再去掉属于非线性运算的序列乘法,剩下3种基本算法,即倍率、加法和单位时延,这是线性数字系统处理信号的基本手段。三种基本运算用信号流图表示,如图6.2.1所示。
信号流图由节点和有向支路组成。每个节点表示一个信号,每个节点处的信号称节点变量。带有箭头的支路表示信号流动方向,和每个节点连接的有输入支路和输出支路,节点变量等于所有输入支路的末端信号之和。写在支路箭头旁边的 或系数a称为支路增益。如果箭头旁边没有标明增益符号,则表示支路增益是1。没有输入箭头的节点称为源节点或输入节点;没有输出箭头或输出箭头不指向其他节点的节点称为输出节点;两个变量相加,用指向一个圆点的两个箭头表示。因此,整个运算结构完全可用这样一些基本运算支路组成,如图6.2.2所示。
            
   图6.2.1  三种基本运算的流图表示                      图6.2.2  基本信号流图的举例
可见,信号流图实际上是由连接信号节点的一些有向支路构成的。如图6.2.2所示,可以依次对每个节点列出如下方程:
                                         (6.2.1)
其中迟延算子的算式 表示 ,而x4z1x3,表示 。可以看出,用信号流图可以简明地表示系统的运算情况,同时也很容易列写它的方程。以下均用信号流图表示网络结构。
信号流图中的环路是指信号顺着箭头流的方向能回到起点处的整条路径。有环路意味着存在反馈。上图中x1x2x3x4x1、x1x3x4x1和x3x4x3都是环路。
不同的信号流图代表不同的运算方法,而对于同一个系统函数,可以有很多种信号流图与之相对应。从运算的可实现性考虑,信号流图必须满足以下三个条件,才能称为基本信号流图(primitive signal flow graphs):
(1)信号流图中所有支路进行的都是基本运算,即支路增益是常数或者是z1;
(2)信号流图中如果有环路,则环路中必须存在延迟支路,否则将出现信号xi(n)的计算要依赖于xi(n)值的悖论状况,使数字系统无法实现。没有延迟支路的环路称为代数环,代数环是构成系统时必须避免的;
(3)节点和支路的数目是有限的。
图6.2.2是一个基本信号流图,图中有三个环路,环路增益分别为0.2 z –1、0.1 z –2和0.3 z –1,说明这些环路内都有延时支路。
根据信号流图可以求出网络的系统函数,方法是列出各个节点变量方程,推导出输出与输入之间的关系。当系统内没有环路时,只要靠代入法消去中间变量就很容易解出。如果系统内存在环路,就要进行等式两端的移项合并。
例6.2.1:求图6.2.2信号流图决定的系统函数H(z)Y(z)/U(z)。
解:对(6.2.1)式进行z变换,得到
                                   (6.2.2)
求解这个方程组纯属代数问题,但也是相当麻烦的,因为它有三个环路。下面大体列出其过程,推导中把自变量符号(z)予以省略:

将X4移项到左端,合并它的系数,并除以右端分母,可求得:
                                 (6.2.3)
又由         得到:
                         (6.2.4)
从解的过程可以看到,把方程组(6.2.1)式做z变换变为方程组(6.2.2)式似乎并没有得到新的信息,不过是在内涵上把时域算子和信号赋予了z变换的含义。实际上信号流图本身是在时域建立的,时域方程中所有的推导都是正确的,而且可以实实在在地指导信号处理的实践。它唯一的问题是无法解释分母上的z –1多项式。在掌握了z变换的理论并懂得z反变换的含义和算法以后,这个分母多项式就得到了解释。因此以后处理以信号流图为基础的滤波器结构时,不必再做一次z变换,可以直接用信号的时域表示式进行推导了。
6.2.2  信号流图方程的计算机解法
可以看到,当结构复杂时,上面利用节点变量方程联立求解的方法很麻烦,梅森(Mason)曾经利用网络拓扑关系提出一个公式,可以直接写出H(z)的表示式,称为梅森公式。这在一般“信号与系统”的教科书中都已讲过。它的化简仍然是很烦琐的。利用MATLAB可以解决这个问题,详见参考文献[14]、[15]。
设信号流图中有Ki个输入节点,以及K个中间节点和输出节点,它们分别代表输入信号ui(i1, 2, , K i)和系统状态xj(j1, 2, , K)。信号流图代表它们之间的联结关系。在离散系统中,这些关系由常数乘子或迟延算子z1构成。令qz1,则信号流图中的任何节点变量xj可以表为输入变量ui和其他节点变量xj的线性组合:
                                       (6.2.5)
用矩阵表示可写成:
                (6.2.6)
其中:X[x1, x2 , , xK]T为K阶状态变量列向量,U[u1, u2, , uKi]T为Ki阶输入变量列向量,Q为KK阶的连接矩阵,P为KKi阶的输入矩阵。
把(6.2.6)式右端的QX项移到等式左端,有 。令WX/U为以全部U为输入,并且全部状态X为输出的系统函数,不难得到:
                                         (6.2.7)
其中,W为KKi的矩阵,也称传递矩阵。若只有一个输入,则W为K阶单列向量,表示输入为U,输出为X(其中含K个变量)的K个传递函数组成的向量。这个简明的公式等价于信号流图中的梅森公式。只要写出P和Q,任何复杂系统的传递矩阵都可用这个简单的式子求得。在没有计算工具的时候,计算(IQ)–1涉及一个阶次很高的矩阵的求逆运算,所以虽然简明却不好使用。但现在就不是问题了,不过还有一个关键点需要扩展。
通常计算机只能进行数值计算。已学过的MATLAB语言中,放在等式右边的变量,都必须是已经赋过值的。如果不给x赋值,键入y2*x,屏幕就会出现错误信息——Undefined function or variable'x'。现在待求的传递函数中存在着一个无法赋值的符号变量qz1,显然将无法为MATLAB所接受。幸而MATLAB已经引进了符号推理功能。只要在程序的开始,规定某些变量是符号变量,系统就不会去追究它的值,而在运算中始终保留这个符号。定义符号变量使用的命令是syms。编写这个程序时,还有两点要说明:
(1)由于变量要分成数值变量和符号变量两类,所以变量组成的矩阵也要分成两类。一个矩阵的属性只有一个,符号变量矩阵可以有数值元素,但数值矩阵就不容许有符号元素。比如这里的Q矩阵,必须是符号矩阵。矩阵的属性是由第一个赋值元素的属性决定的。所以程序中给Q赋值的第一条语句的右端,必须含符号变量,这很重要,它保证了Q是符号矩阵。
(2)Q和P阵都有很多个元素,但不需要逐个赋值。应该把非零的元素赋值,零元素先不用去管它,最后只要把矩阵右下角的元素赋值。利用MATLAB的规定,矩阵中所有左上方的未赋值元素都会自动赋为零。
现在利用计算机来解例题6.2.1。初学者应该先列出矩阵方程:
                          (6.2.8)
由此可以得出程序hc621如下:
syms q                                            % 规定q为符号变量
Q(2,1)=q; Q(1,4)=-0.1;                    % 先给Q(2,1)赋值,因为它的右端含符号变量
Q(3,1)=2;Q(3,2)=1;Q(3,4)=0.3;
Q(4,3)=q
Q(5,3)=0.5;Q(5,4)=1;
Q(5,5)=0;                                       % 给Q右下角分量赋值,使矩阵Q中未赋值的分量全置零
P(1,1)=1;                                       % 给矩阵P赋值
P(5,1)=0;                                        % 给P右下角分量赋值,使矩阵P未赋值的分量全置零
W=inv(eye(5)-Q)*P                           % 按公式(6.2.7)求X=[x1; x2; x3; x4; y] 对U的系统函数
pretty(W(5))                                    % 以易于阅读的方式显示以y=x5为输出的系统函数
程序运行的结果为:
                                (6.2.9)
                                (6.2.10)
(6.2.9)式中,MATLAB把以U为输入,且5个变量X[x1;x2;x3;x4;y]为输出的传递函数W全求出来了。需要的只是第5个传递函数W(5)。用pretty(W(5))的语句使它以易读的形式显示。因为MATLAB的变量不容许有上标,其显示只能到q为止,后面的z–1函数形式是以人工补上去的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-4-3 00:09 , Processed in 0.047461 second(s), 10 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表