Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-06-22
年龄: 37
帖子: 12
声望力: 17 ![]() |
![]() 我是一个MATLAB的初学者,昨天老师留了个实验,用matlab求一个系统传递函数的未知参数.下面是我想的框架.主要的不是求解的原理问题,就是程序的可行性,有些注释,希望给些指点. syms s y=ilaplace(0.35/((s+0.5)*(s+0.7))); for t=0:3 g(t)=y; end /*t=0到3 时,将Y的值赋予g(t)*/ A=[g(1),g(2);g(2),g(3)]; /*方程组-g(0)=a1*g(1)+a2*g(2) ;-g(1)=a1*g(2)+a2*g(3)求a1.a2 */ B=[-g(0),-g(1)]; C=[a1,a2]; C=B/A; /*求出a1,a2 */ x=solve('1+ai*x+a2*x^2') /*1+ai*x+a2*x^2=0 的根*/ s1=log(x1); s2=log(x2); D=[1,1;exp(s1),exp(s2)]; E=[g(0),g(1)]; F=[c1,c2]; F=E/F; /*求出c1,c2*/ |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
程序的问题还是挺多的,你的y 还想是在做 拉式变换哦
错误:1. g(t) 你是从0开始取的,这是不对的,向量的第一个位置对应的是1,不是0 2. C=[a1,a2],直接删除,虽然能明白你的意思,但是不是这么用的,把这个删除了,再把下面的程序 C=B/A 改为 [a1,a2]=B/A ,就可以了。 3. 你的a1求出来是 -1, a2=0,那么解那个方程组的时候 只能得到一个解,不会有两个解 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
x=solve('1+ai*x+a2*x^2')
这个程序,如果这么写的话 a1,a2 都是字母串,而不是数值 所以应该改为: syms x f=@(a1,a2) 1+a1*x+a2*x^2; X=solve(f(a1,a2)); 就可以了 不过方程只有1个解,你想得到2个解,那你的问题是不是哪里弄错了呢? |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]急,关于解偏微分方程 | duras | MATLAB论坛 | 0 | 2008-08-15 11:23 |
[求助]刚入门MATLAB,有一问题请教,求plot(x,y) | 椰风 | MATLAB论坛 | 0 | 2008-05-12 19:20 |
【求助】如何做FFT变换? | ceeshy | MATLAB论坛 | 1 | 2007-12-21 11:27 |
【求助】一个简单的作图问题 | hinac | MATLAB论坛 | 3 | 2007-07-10 11:22 |
【求助】有一个数学实验问题请教,急急急! | 买豆腐的 | MATLAB论坛 | 0 | 2007-07-03 16:44 |