作业帮 > 综合 > 作业

用matlab 求两组数据的传递函数怎么求?急

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 03:38:31
用matlab 求两组数据的传递函数怎么求?急
有两组数据,数据在.mat的文件里面,怎么用matlab 求两组数据的传递函数怎么求?这两组数据是这样的:例如:燃料从5吨变到10吨,看负荷怎么变化,求出燃料与负荷之间的传递函数?
从5吨到10吨是怎么变化的,是阶跃变化,还是逐渐变化?还有,能不能预判出这个系统是几阶的?这决定了用什么方法求传递函数.
再问: 是阶跃变化的,我是要建协调控制系统中,燃料对功率和主汽压的变化,以及调门开度对功率和主汽压的变化的数学模型,然后解耦,应该是2阶或者三阶的吧!谢谢,希望能够得到解答
再答: 具体的我一句两句说不清楚。LZ你可以这样做:你的那两组数据应该是时间和负载吧,把你的那个数据作图(时域图),然后用辨识二阶系统的方法去辨识,我记得好像是要取稳态值40%和70%两个时间点,然后根据一些公式(书上和网上都有)就能计算出二阶系统传递函数的参数,如果是三阶或以上系统,可以近似看成二阶系统加一个延迟 环节(也就是e^(-ts),t是延迟的时间),延迟时间你根据图大概地估计一下。

上面这种方法可能听起来比较山寨,基本上都是人工在做,精度也不用指望会很高,不过你一定能做出一个结果。如果想要自动化程度高一点,可以用MATLAB的系统辨识工具箱,具体用法看看下面网页的文章,好像也不是很复杂http://blog.csdn.net/owldestiny/article/details/4951253
系统辨识工具箱我也没用过,不知道会作出什么结果,lz还要自己验证一下,看看对不对。
PS:LZ说要解耦,那说明这个系统是多变量了,但传递函数是单输入单输出的,没有解耦的问题,所以我不知道你求出传递函数的做法是不是对的。我记得多输入变量解耦的问题,应该用现代控制理论状态空间方程的方法解决(虽然我在学现代控制理论的时候没学解耦的方法,但是我记得老师好像提到过)。以上纯粹是我个人的看法,如果LZ很肯定自己的方法是对的,请无视。
再问: 用最小二乘法辨识的话,二阶和三阶有区别吗,我是要求出燃料对负荷的传递函数,燃料给个阶跃,看负荷随时间怎么变化。那辨识出来的是负荷和时间的关系,那和燃料怎么连起来呢,燃料增,和燃料减得出的传递函数一样吗?谢谢!
再答: 不好意思,昨天没上。看来LZ的两组数据确实是时间和负荷。matlab系统辨识工具箱要求的数据只是输入和输出,不是时间。也好办,把本来时间的那列数据换成输入。因为是阶跃输入,所以应该很简单,全是一个数(前提是阶跃的起点是0秒,如果不是那要注意),这个数就是阶跃的幅值,比如单位阶跃,就全部都是1。有一点很重要需要注意,那就是采样时间sampling interval的设置,注意一下本来那组时间数据里每两个数据之间时间间隔是多少,采样时间就是这个间隔,比如间隔是0.1s,那么这里就填0.1(如果本来数据的采样时间间隔不是固定的,而是变化的,那就难办了)。还有开始时间starting time,这就和本来数据的采集开始时间有关,LZ自己看着办。
单单一个二阶系统和三阶是有点区别的。不过三阶及以上的系统一般都可以近似成二阶系统加一个延迟环节,注意是二阶加一个延迟环节。阶数的设置其实就是poles个数的设置,这里还要求设置极点类型,有全实数的,有欠阻尼的等等,还有下面的是否有zero,是否有dealy(延迟),是否有Integral(积分),这些LZ都可以试一试,看看怎么设置辨识出的结果最接近原始数据。
正负阶跃的到的结果应该是一样的,因为系统是一样的,系统定了,传递函数就定了。(当然,正负阶跃的输入输出是不一样的)。
LZ还不会弄的话,可以把数据给我,我来辨识,我自己看了一下有关matlab系统辨识工具箱的用法的文章,感觉很简单,一下子就会了。