谁能帮我看看程序出错在哪?谢谢!
菜鸟刚学matlab,主要用于信号与线性系统课程的仿真用源程序如下:
%求系统y⑵(t)+6y⑴(t)+8y(t)=3X⑴(t)+9X(t)的冲激响应和阶跃响应
%求系统的冲激响应
b = ;
a = ;
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
>> whos H
Name Size BytesClass
H 1x1 2190tf object
Grand total is 31 elements using 2190 bytes
H的class为tf是什么意思?tf函数是求传输函数用的。是不是因为这才导致ilaplace不能执行?
麻烦哪位高人热心解答下,不胜感激! 错误原因:tf的结果是char类型,而ilaplace需要的是符号函数。
clear;
syms t s
H1=sym('(3*s+9)/(s^2+6*s+8)');
h=ilaplace(H1,s,t);%计算传递函数
b = ;
a = ;
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('传输函数');
[ 本帖最后由 花如月 于 2007-7-9 17:06 编辑 ] 运行成功,谢谢! 但是还是个问题啊,你得重新定义一个变量“H1=sym('(3*s+9)/(s^2+6*s+8)');”
这表明我在程序运行中还得看H的表达式,这对程序运行很不方便,麻烦你再看看,谢谢! H2=sym(H)
??? Error using ==> sym.sym
Conversion to 'sym' from 'tf' is not possible.
非得知道H的表达式,才能通过“H1=sym('(3*s+9)/(s^2+6*s+8)');”转成符号函数吗?麻烦你再看看,能不能优化下 花如月给的没问题吧,你用7.0?花如月的程序得到的结果
页:
[1]