声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1440|回复: 5

[编程技巧] 谁能帮我看看程序出错在哪?谢谢!

[复制链接]
发表于 2007-7-9 15:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
菜鸟刚学matlab,主要用于信号与线性系统课程的仿真用

源程序如下:
%求系统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

>> whos H
  Name      Size                    Bytes  Class

  H         1x1                      2190  tf object

Grand total is 31 elements using 2190 bytes

H的class为tf是什么意思?tf函数是求传输函数用的。是不是因为这才导致ilaplace不能执行?

麻烦哪位高人热心解答下,不胜感激!
回复
分享到:

使用道具 举报

发表于 2007-7-9 17:04 | 显示全部楼层
错误原因: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('传输函数');

[ 本帖最后由 花如月 于 2007-7-9 17:06 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-7-9 17:44 | 显示全部楼层
运行成功,谢谢!
 楼主| 发表于 2007-7-9 18:16 | 显示全部楼层
但是还是个问题啊,你得重新定义一个变量“H1=sym('(3*s+9)/(s^2+6*s+8)');”

这表明我在程序运行中还得看H的表达式,这对程序运行很不方便,麻烦你再看看,谢谢!
 楼主| 发表于 2007-7-11 10:48 | 显示全部楼层
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)');”转成符号函数吗?麻烦你再看看,能不能优化下
发表于 2007-7-11 11:49 | 显示全部楼层
花如月给的没问题吧,你用7.0?花如月的程序得到的结果
r.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 03:28 , Processed in 0.060689 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表