源程序如下:
%求系统y⑵(t)+6y⑴(t)+8y(t)=3X⑴(t)+9X(t)的冲激响应和阶跃响应
%求系统的冲激响应
b = [3,9];
a = [1 6 8];
H = tf(b,a); %求系统函数
t = 0:0.1:10;
y = impulse(H,t);
subplot(2,1,1),plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('单位冲激响应');
%显示传输函数
h = ilaplace(H);
subplot(3,1,2),plot(t,h);
title('传输函数');
报错为:
Function 'ilaplace' is not defined for values of class 'tf'.
我查看了一下H变量,显示为:
>> H
Transfer function:
3 s + 9
-------------
s^2 + 6 s + 8
错误原因:tf的结果是char类型,而ilaplace需要的是符号函数。
clear;
syms t s
H1=sym('(3*s+9)/(s^2+6*s+8)');
h=ilaplace(H1,s,t);%计算传递函数
b = [3,9];
a = [1 6 8];
H = tf(b,a); %求系统函数
t = 0:0.1:10;
y = impulse(H,t);
subplot(2,1,1),plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('单位冲激响应');
subplot(2,1,2),fplot(inline(char(h)),[-1 1]);
title('传输函数');