标签:
杂谈 |
分类: 数字信号处理(DSP) |
在11月7日的日志中,我们已经了解了如何用朱利判据(Jury Test)来研判一个线性离散时间(LDT)系统是否具有BIBO稳定性。
显然,以人工的计算方式来得到朱利判据的各个因子a0,b0,c0...是很费事的,也很容易出错。因此,我们可以考虑使用Matlab来辅助计算这些因子,并进行相应的研判。
参考11月7日的日志,通过观察可知:因子a0,b0,c0...的计算大部分是行列式运算,对应Matlab语言中的det()函数;另外,计算的过程中总是不可回避地要使用代数表达式,因此可以考虑Matlab的符号计算功能。
1.首先开列出因子a0,b0,c0…的计算函数(以三维的JuryTable为例),这是朱利判据的核心计算部分:
function V = JuryTableD3(a0, a1, a2)
b0 = 1/a0*det([a0,a2;a2,a0]);
b1 = 1/a0*det([a0,a1;a2,a1]);
c0 = 1/b0*det([b0,b1;b1,b0]);
V{1,1} = a0;
V{2,1} = b0;
V{3,1} = c0;
注意:在输出矢量V中,之所以要使用大括号”{}”,是因为得到的结果a0,b0,c0都是符号变量,需要使用单位矩阵V进行赋值传递。
2.接下来便是如何应用了,仍以11月7日的日志那个问题为样例,设定某离散系统的传递函数为
我们只对分母多项式的第二项,即:
进行分析,这时,对应的a0 = 1, a1 = -1, a2 = a;
于是,利用JuryTableD3函数计算a0,b0,c0,则有:
>> syms a
>> a0 = 1;
>> a1 = -1;
>> a2 = a;
>> V = JuryTableD3(a0,a1,a2)
V =
[
1] [1x1 sym]
[1x1 sym]
此时,输出矢量V中已经包含了a0,b0,c0。为了计算a0>0,b0>0,c0>0,我们使用Maple接口计算不等式:
>> a0 = V{1,1}
a0 =
1
>>
b0 = V{2,1} b0
= 1-a^2
>>
c0 = V{3,1} c0
= 1/(1-a^2)*(-3*a^2+a^4+2*a)
>> maple('solve({1>0,1-a^2>0,1/(1-a^2)*(-3*a^2+a^4+2*a)>0}),a')
ans =
{0 < a, a < 1}, a
所以,当0<a<1时,该系统就是BIBO稳定的。

加载中…