控制系统的时域分析法,即直接在时间域中对系统进行分析,可以提供系统时间响应的全部信息,具有直观、准确的特点。为了研究控制系统的时域特性,经常采用瞬态响应(如阶跃响应、脉冲响应)。
用MATLAB求系统的瞬态响应时,将传递函数的分子、分母多项式的系数分别以s的降幂排列写为两个数组num、den。由于控制系统分子的阶次m一般小于其分母的阶次n,所以num中的数组元素与分子多项式系数之间自右向左逐次对其,不足部分用零补齐,缺项系数也用零补上。
例如,对于下列系统:
该系统可以表示为两个数组,每一个数组由相应的多项式系数组成,并且以s的降幂排列。求其阶跃响应的MATLAB指令为:
num = [0 0 25];
den = [1 4 25];
step(num,den)
grid
运行结果为:
同样的,求系统的脉冲响应指令为:impulse(num,den)
对于系统的稳定性判断,一般有两种方法:
1.直接求根判稳:控制系统稳定的充要条件是其特征方程的根均具有负实部。因此为了判别系统的稳定性就要求出系统特征方程的根,并检验它们是否都具有负实部。
MATLAB中对多项式求根的函数为roots(),若求以下多项式的根:
则MATLAB指令为:
>> roots([1,10,35,50,24])
运行结果:
ans =
-4.0000
-3.0000
-2.0000
-1.0000
可见特征方程的根具有负实部,因而系统为稳定的。
2.劳斯稳定判据:劳斯判据是通过构造系统的劳斯表,依据劳斯表的第一列是否有符号的变化,判断系统的稳定性。若劳斯表的第一列没有符号的变化,则系统是稳定的。
由于MATLAB中没有自带的构造劳斯表的函数,需要自己编写,以下给出一种实现劳斯表的函数代码:
function R = routh(D) %R表示劳斯表,D表示特征多项式系数组成的向量
L = length(D);
if rem(L,2)==1
k=L+1;
else
k=L;
end
R = zeros(L,k/2);
if rem(L,2)==0
for j=1:k/2
R(1,j) = D(2*j-1);
R(2,j)=D(2*j);
end
else
for j=1:(k/2)-1
R(1,j)=D(2*j-1);
R(1,k/2)=D(k-1);
R(2,j)=D(2*j);
end
end
for i=3:L
for j=1:k/2-1
R(i,j)=(R(i-1,1)*R(i-2,j+1)-R(i-2,1)*R(i-1,j+1))/R(i-1,1);
end
end
R %在屏幕上显示routh表
以上述多项式为例,由routh判据判定系统的稳定性:
den = [1,10,35,50,24];
r = routh(den)
运行结果:
R =
1 35 24
10 50 0
30 24 0
42 0 0
24 0 0
由系统返回的routh表可以看出,其第一列没有符号的变化,系统式稳定的。