matlab中已知状态方程,怎么求等效传递函数与零极点模型?

matlab中已知状态方程,怎么求等效传递函数与零极点模型?,第1张

已知状态方程

x'=AX+BU;

y=CX+DU。

先求出传递函数的状态空间模型:G=ss(A,B,C,D)。

将状态空间模型转为传递函数模型:G1=tf(G)。

再求零极点:[z,p,k]=tf2zp(G1num{1,1},G1den{1,1})。

得到零极点模型:G2=zpk(z,p,k)

完成。

分析了一下代码,应该是调用predict函数(toolbox\ident\ident\@idmodel\predictm),初值估计的代码应该在子函数x0iniest中,你可以自己跟踪运行看看相应的算法,或者,举一个具体的实例,我可以结合具体实例帮助你做分析。

使用MATLAB的系统辨识工具箱来实现。

点击后打开对话框

导入时域数据

计算传递函数

改变两个系数后开始估计

双击

得到传递函数

拟合度不够好继续改变上面系数,再试

MATLAB里面有系统模型辨识的工具箱,这个工具箱支持多种模型的辨识,比如传递函数,状态空间方程等等,用来辨识的数据可以是时域的,也可以是频域的。在命令界面里输入ident就可以调出那个工具箱,这个工具箱是界面 *** 作,很简单的。

百度文库里一篇文章叫”系统辨识的MATLAB实现(手把手)“,可以去看一下,这篇文章里面就是介绍怎么用MATLAB辨识系统的数学模型,第1页到第5页用的是编程方法实现,第5页之后就是用我说的系统辨识工具箱实现,真的是手把手的介绍,还是比较详细,容易理解的。

用转换符

功能的Cmax,TP,TS] = myfun(A) BR />粗略计算参数变化的阶跃响应峰值,峰值时间,调整时间

定义一个数组,如a = 1:01:5;

N =长度(a)

为I = 1:N

%建立传递函数

数= [1];书房= [1 2(I)1];

SYS0,= TF(NUM,DEN);

Y0,T0 =步骤(SYS0);

%计算

TP峰的Cmax,峰值时间tp

CMAX(I)= (y0)的(ⅰ)=样条(Y0,t0时,(ⅰ)的Cmax);

%计算出的调整时间ts,5%,如果需要权计算的2%005 002取代可以简单地 / a>

对于k = 1:长度(Y0)

如果ABS(Y0(K:长度(Y0))-1)<005

TS(I)=样条曲线(Y0,T0 ,Y0(K)); 结束

结束

结束

扩展资料:

传递函数概念的适用范围限于线性常微分方程系统当然,在这类系统的分析和设计中,传递函数方法的应用是很广泛的。下面是有关传递函数的一些重要说明(下列各项说明中涉及的均为线性常微分方程描述的系统):

1、系统的传递函数是一种数学模型,它表示联系输出变量与输入变量的微分方程的一种运算方法;

2、传递函数是系统本身的一种属性,它与输入量或驱动函数的大小和性质无关;

3、传递函数包含联系输入量与输出量所必需的单位,但是它不提供有关系统物理结构的任何信息(许多物理上完全不同的系统,可以具有相同的传递函数,称之为相似系统);

-传递函数

其实很简单,进过tf函数计算后的传递函数是一个tf类型的结构体,在工作变量空间双击该变量,会列出该结构体所包含的所有变量,第一二个列出来的就是传递函数表达式的分子(num)和分母(den)了。要导出分子分母则只需用结构体句柄的方式调用就是了。

如程序:clcclearfor

k=[0,05,1,2]

num1=k[1

3];

den1=conv([1

0],[1

-1]);

G=tf(num1,den1);

%计算传递函数

sys=feedback(G,1);

%负反馈

end

sysden{1}

%得到分母

注意:得到的分子分母是系数矩阵,转换为符号表达式很容易了,这里就不赘述了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12184946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存