
如何用matlab求传递函数?今以多自由度振动系统的半正定系统求解可以按下列步骤进行:
已知系统质量矩阵{M}是正定矩阵,刚度矩阵{M}是半正定矩阵,求以m2的位移x2为输出,以作用在m2上的力f为输入的系统传递函数。
1建立系统动力学方程
m2dx2^2/dt^2=f-k2(x2-x1)-c1(dx2/dt-dx1/dt)
m1dx1^2/dt^2=k2(x2-x1)+c2(dx2/dt-dx1/dt)-k1(x1-x0)-c1(dx1/dt-dx0/dt)
m0dx0^2/dt^2=k1(x1-x0)+c1(dx1/dt-dx0/dt)
令z1=x0,z2=x1,z3=x2,z4=dx0/dt,z5=dx1/dt,z6=dx2/dt,y=x2,则Z=(z1,z2,z3,z4,z5,z6)^T。
由此,得到该系统的状态空间方程
dZ/dt=AZ+Bf
y=(0,0,1,0,0,0)Z
2求传递函数X2(s)/ F(s),为了方便求解,我们建立modelm()函数,其代码为
function sysm=modelm(sysp)
m0=sysp(1); %m0的质量
m1=sysp(2); %m1的质量
m2=sysp(3); %m3的质量
k1=sysp(4); %m1的刚度
k2=sysp(5); %m2的刚度
c1=sysp(6); %m1的阻尼
c2=sysp(7); %m2的阻尼
A=[。。。];
B=[。。。];
C=[。。。];
D=0;
sys1=ss(A,B,C,D); %得到状态空间模型
sysm=zpk(sys1);%得到零极点增益模型,即该系统的传递函数
3调用方式
symp=[21,9,15,1000,400,0,0] %[m0,m1,m2,k1,k2,c1,c2]
X2_F=modelm(sysp)
知识扩展:
(1)传递函数的概念
传递函数是指零初始条件下线性系统响应(即输出)量的拉普拉斯变换(或z变换)与激励(即输入)量的拉普拉斯变换之比。记作G(s)=Y(s)/U(s),其中Y(s)、U(s)分别为输出量和输入量的拉普拉斯变换。
(2)传递函数的主要应用
1、 确定系统的输出响应。对于传递函数G(s)已知的系统,在输入作用u(s)给定后,系统的输出响应y(s)可直接由G(s)U(s)运用拉普拉斯反变换方法来定出。
2、分析系统参数变化对输出响应的影响。对于闭环控制系统,运用根轨迹法可方便地分析系统开环增益的变化对闭环传递函数极点、零点位置的影响,从而可进一步估计对输出响应的影响。
3、用于控制系统的设计。直接由系统开环传递函数进行设计时,采用根轨迹法。根据频率响应来设计时,采用频率响应法。
直接使用simulink求解不就好了吗如果一定要那可以对原来的式子进行反拉氏变换就得到微分方程了,再求解转换得到的微分方程另外一种方法就是将传递函数转换为状态空间dx=Ax+Buy=Cx+Du这样你可以先使用ode45求解第一个方程,在将x和u带入第二个方程就可以得到y了
先把离散传递函数表示出来,然后用ss转换成状态空间的形式:
>> z=tf('z');>> G=(2z^2+z+2)/(z^3+6z^2+11z+6)
Transfer function:
2 z^2 + z + 2
----------------------
z^3 + 6 z^2 + 11 z + 6
Sampling time: unspecified
>> ss(G)
a =
x1 x2 x3
x1 -6 -275 -075
x2 4 0 0
x3 0 2 0
b =
u1
x1 2
x2 0
x3 0
c =
x1 x2 x3
y1 1 0125 0125
d =
u1
y1 0
Sampling time: unspecified
Discrete-time model
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)