今天在自学自控原理的过程中遇到了一个小问题。想要把系统的传递函数变成时域下的函数形式,理所当然的想到了拉氏反变换,拉氏反变换在matlab中的指令是ilaplace()。
于是将得到的系统传递函数直接进行拉氏反变换想要得到结果,但是系统给出了如下错误提示:
在MATLAB手册中,对于ilaplace()函数的解释是这样的:
在第一行给出的描述是这样的:
returns the Inverse Laplace Transform of f
= ilaplace(F)F
. By default, the independent variable is s
and the transformation variable is t
. If F
does not contain s
, ilaplace
uses the function symvar
.
这句话的大概意思就是ilaplace(F)返回的是F的拉氏反变换,默认F是s构成的函数,返回值用t来构成,如果F中不含有s,那么使用系统变量。
但是当我们使用s构成传递函数的时候,s不再是一个普通的symvar,而是一个tf类型的变量,“tf”在matlab中表示传递函数模型,进一步说,由s构成的传递函数G(s),就不能直接使用ilaplace()进行反变换,需要将s变成symvar之后,才能将G(s)变成G(t).
tf 在matlab中的解释:
而我们常常在matlab中建立传递函数的时候使用的
s=tf('s');
就已经将s以及由s构成的传递函数G(s)变成了tf类型。
如下实例:
clear;
clc;
s=tf('s');
G1=2/s;
G2=1/(s+3);
Rs=1/s;
Ns=1;
% 传递函数
G12=series(G1,G2);
Gcr=feedback(G12,1);
%输出
Crs=Gcr*Rs;
当在命令行窗口对Crs进行拉氏反变换的时候,会给出报错:
此时将s变成系统变量symvar,并将此时的Crt传递函数复制给新变量准备进行拉氏反变换,然后进行拉氏反变换即可完成。
使用syms s重新对s定义,然后完成拉氏反变换即可。