已知状态方程
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里面有系统模型辨识的工具箱,这个工具箱支持多种模型的辨识,比如传递函数,状态空间方程等等,用来辨识的数据可以是时域的,也可以是频域的。在命令界面里输入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}
%得到分母
注意:得到的分子分母是系数矩阵,转换为符号表达式很容易了,这里就不赘述了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)