检测极限环定点状态空间系统

此示例示出了如何分析定点状态空间系统检测极限周期。

该示例的重点是由于与零个输入和亮点是足以防止这种振荡的条件溢出检测大规模极限周期。

参考文献:

[1]理查德A. Roberts和克利福T. Mullis的, “数字信号处理”,Addison-Wesley出版社,阅读,马萨诸塞,1987,ISBN 0-201-16350-0,第9.3节。

[2] S. K.米特拉, “数字信号处理:基于计算机的方法”,麦格劳 - 希尔,纽约,1998年,ISBN 0-07-042953-7。

选择系统的状态空间。

我们观察到,该系统是稳定的通过观察状态转换矩阵A的特征值具有幅度小于1。

originalFormat = GET(0,'格式');格式A = [0 1;-.5 1];B = [0;1];C = [1 0];d = 0;EIG(A)
ANS = 0.5000 + 0.5000i 0.5000  -  0.5000i

滤波器的实现

类型(完整文件(matlabroot,'工具箱''固定点''fidemos''+ fidemo''fisisostatespacefilter.m'))
函数[Y,Z] = fisisostatespacefilter(A,B,C,d,X,Z)%FISISOSTATESPACEFILTER单输入,单输出的statespace滤波器%[Y,Zf的] = FISISOSTATESPACEFILTER(A,B,C,d,X中,Z)滤波器与%初始条件子数据X与由矩阵%A中定义的状态空间滤波器,B,C,D输出Y和最终条件Zf的被返回。%版权所有二零零四年至2011年MathWorks公司Y = X;Z(:,2:长度(X)+1)= 0;对于k = 1:长度(X)Y(K)= C * Z(:,k)的+ d * X(k)的;Z(:,k + 1)= A * Z(:,K)+ B * X(k)的;结束

浮点过滤器

创建一个浮点过滤器和观察国的轨迹。

首先,我们选择单位正方形内的随机状态,并观察他们是乘以状态转换矩阵A.一个步骤之后,预计

RNG('默认');CLF X1 = [1 -1 1 -1 -1];Y1 = [-1 -1 1 1 -1];图(X1,Y1,'C')轴([ -  1.5 1.5 -1.5 1.5]);轴广场;网格;保持%画出正方形的突起P = A * [X1; Y1];积(P(1,:),P(2,:),'R')R = 2 *兰特(2,1000)-1;PR = A * R;情节(PR(1,:),PR(2,:),''

随机初始状态其次通过时间

驱动所述过滤器与随机初始状态下,归一化为单位正方形内,与输入全零,并运行该过滤器。

请注意,某些状态的漫步单位正方形之外,并且它们最终放松下来到零状态在原点,Z = [0 0]。

X =零(10,1);滋= [0 0];Q =量化器([16 15]);对于K = 1:20 Y = X;字(:) = randquant(Q,尺寸(A,1),1);[Y,ZF = fidemo.fisisostatespacefilter(A,B,C,d,X,ZI);情节(ZF(1,:),ZF(2,:),'走-''markersize',8);结束标题(“双精度状态序列块”);xlabel('Z1');ylabel('Z2'

状态轨迹

由于特征值小于一的幅度,该系统是稳定的,并且所有的初始状态放松下来到零输入原点。然而,特征值不告诉各州的轨迹整个故事,在这个例子中,当国家是向外凸出第一,他们开始合同之前。

A的奇异值给我们的整体状态轨迹的一个更好的指标。最大奇异值约为1.46,这表明与对应的奇异向量对齐状态将会从原点投射了。

SVD(A)
ANS = 1.4604 0.3424

定点创建过滤器

建立定点滤波器和检查极限环。

该滤波器的MATLAB®代码保持不变。它成为一个定点滤波器,因为我们有定点输入驱动。

用于说明溢出振荡起见,我们选择通过积和数据类型,将溢出。

RNG('默认');F = fimath('OverflowAction''包裹'...'ProductMode''SpecifyPrecision'...'ProductWordLength'16,'ProductFractionLength'15,...'SumMode''SpecifyPrecision'...'SumWordLength'16,'SumFractionLength',15);A =科幻(A,'fimath',F)B =音响(B,'fimath',F)C =音响(C,'fimath',F)d =音响(d,'fimath',F)
A = 0 1.0000 -0.5000 1.0000 DataTypeMode:定点:二进制点缩放符号性:签字字长:16 FractionLength:14 RoundingMethod:最近OverflowAction:裹ProductMode:SpecifyPrecision ProductWordLength:16 ProductFractionLength:15 SumMode:SpecifyPrecision SumWordLength:16 SumFractionLength:15 CastBeforeSum:真B = 0 1 DataTypeMode:定点:二进制点缩放符号性:签字字长:16 FractionLength:14 RoundingMethod:最近OverflowAction:裹ProductMode:SpecifyPrecision ProductWordLength:16 ProductFractionLength:15 SumMode:SpecifyPrecision SumWordLength:16 SumFractionLength:15 CastBeforeSum:真C = 1个0 DataTypeMode:定点:二进制点缩放符号性:签字字长:16 FractionLength:14 RoundingMethod:最近OverflowAction:裹ProductMode:SpecifyPrecision ProductWordLength:16 ProductFractionLength:15 SumMode:SpecifyPrecision SumWordLength:16 SumFractionLength:15 CastBeforeSum:真d = 0 DataTypeMode:定点点:二进制点缩放的符号性:签名字长:16 FractionLength:15 RoundingMethod:最近OverflowAction:裹ProductMode:SpecifyPrecision ProductWordLength:16 ProductFractionLength:15 SumMode:SpecifyPrecision SumWordLength:16 SumFractionLength:15 CastBeforeSum:真

画出广场的投影定点

再一次,我们的单位正方形内选择随机状态和观察在那里它们被投影的乘以状态转换矩阵A.一个步骤后不同的是,这个时间矩阵A定点。

需要注意的是,在浮点前投射方形的出三角形,现在包裹回到广场的内部。

CLF R = 2 *兰特(2,1000)-1;PR = A * R;情节([ -  1 1 1 -1 -1],[ -  1 -1 1 1 -1],'C')轴([ -  1.5 1.5 -1.5 1.5]);轴广场;网格;保持情节(PR(1,:),PR(2,:),''

执行定点过滤器。

只有这句和前面的代码之间的区别是,我们正在与定点数据类型的驾驶它。

X =科幻(零(10,1),1,16,15,'fimath',F);滋=科幻([0; 0],1,16,15,'fimath',F);Q = assignmentquantizer(ZI);E =双(EPS(ZI));RNG('默认');对于K = 1:20 Y = X;字(:) = randquant(Q,尺寸(A,1),1);[Y,ZF = fidemo.fisisostatespacefilter(A,B,C,d,X,ZI);如果ABS(双(ZF(结束)))> 0.5,C =“滚装”;其他中,c ='走-';结束情节(ZF(1,:),ZF(2,:),C,'markersize',8);结束标题(“定点状态序列块”);xlabel('Z1');ylabel('Z2'

尝试这种其他随机选择的初始状态示出,一旦状态进入三角形区域中的一个,然后将其投射到其他三角形区域,和来回,从不逸出。

防范溢出极限环的充分条件

有两个充分条件,以防止溢出极限周期在一个系统:

  • 系统是稳定的,即,ABS(EIG(A))<1,

  • 矩阵A是正常的,即A '* A = A * A'。

需要注意的是当前的表示,第二个条件不成立。

应用相似变换,以创建一个正常

我们现在应用相似变换到原来的系统,该系统将创建一个正常的状态过渡矩阵A2。

T = [-2 0 -1 1];TINV = [ - 。5 0;  -  5 1];A2 = Tinv的* A * T;B2 = Tinv的* B;C2 = C * T;D2 = d;

相似变换保存的特征值,其结果是变换系统的系统的传递函数保持与以前相同的结果。然而,转化状态变换矩阵A2是正常的。

检查的转化系统的极限环。

绘制普通形式体系的广场的投影

现在随机初始状态的单元内部的投影方所有合同均匀。这是状态转移矩阵A2是正常的结果。的状态也通过逆时针旋转90度。

CLF R = 2 *兰特(2,1000)-1;PR = A2 * R;情节([ -  1 1 1 -1 -1],[ -  1 -1 1 1 -1],'C')轴([ -  1.5 1.5 -1.5 1.5]);轴广场;网格;保持情节(PR(1,:),PR(2,:),''

绘制状态序列

再次绘制状态序列相同的初始状态和以前我们看到,现在输出向原螺旋。

X =科幻(零(10,1),1,16,15,'fimath',F);滋=科幻([0; 0],1,16,15,'fimath',F);Q = assignmentquantizer(ZI);E =双(EPS(ZI));RNG('默认');对于K = 1:20 Y = X;字(:) = randquant(Q,尺寸(A,1),1);[Y,ZF] = fidemo.fisisostatespacefilter(A2,B2,C2,D2,X,ZI);如果ABS(双(ZF(结束)))> 0.5,C =“滚装”;其他中,c ='走-';结束情节(ZF(1,:),ZF(2,:),C,'markersize',8);结束标题(“普通表格定点状态序列块”);xlabel('Z1');ylabel('Z2'

尝试这种其他随机选择的初始状态示出了不存在区域从其中过滤器是无法恢复。

组(0,'格式',originalFormat);%#确定<* NASGU,* NOPTS>