基于Matlab进行系统的传递函数的零极点求解及与空间状态表达式的转换
matlab状态空间表达式的解

标题:MATLAB状态空间表达式的解析一、概述MATLAB是一种非常常用的数学软件,用于分析、设计和模拟动态系统。
在控制系统理论中,状态空间表达式是描述线性系统动态行为的重要方法。
本文旨在介绍如何使用MATLAB对状态空间表达式进行解析和分析。
二、状态空间表达式简介状态空间表达式是一种描述线性时不变系统的数学模型。
通常由状态方程和输出方程组成。
状态方程描述了系统的演化规律,而输出方程则描述了系统状态和输出之间的关系。
三、MATLAB中的状态空间表示在MATLAB中,状态空间表示可以使用ss函数进行表达。
该函数的输入参数包括系统的状态方程系数矩阵A、输入矩阵B、输出矩阵C 和前馈矩阵D。
四、求解状态空间表达式1. 稳态响应分析在MATLAB中,可以使用sys = ss(A,B,C,D)定义一个状态空间模型,然后使用step(sys)绘制系统的阶跃响应曲线。
通过阶跃响应曲线可以分析系统的稳态性能。
2. 传递函数表示使用tf(sys)可以将状态空间表示转换为传递函数表示,这样可以更方便地分析系统的特性。
3. 稳定性分析使用eig(A)可以计算状态方程系数矩阵A的特征值,从而判断系统的稳定性。
如果系统的所有特征值都是负实数,那么系统是稳定的。
4. 频域特性分析使用bode(sys)可以绘制系统的频率响应曲线,这样可以分析系统在不同频率下的特性。
五、应用实例以电机控制系统为例,假设系统的状态空间表达式为:A = [-2 -1; 3 -4]B = [1; 0]C = [0 1]D = [0]可以使用以下代码在MATLAB中求解该系统:sys = ss(A,B,C,D)step(sys)tf_sys = tf(sys)eig(A)bode(sys)六、结语本文介绍了MATLAB中状态空间表达式的解析方法,并以电机控制系统为例进行了说明。
希望本文能够帮助读者更好地理解和应用状态空间表达式在MATLAB中的求解方法。
实验一 MATLAB系统的传递函数和状态空间表达式的转换.

实验一 MATLAB 系统的传递函数和状态空间表达式的转换一、 实验目的1、学习多变量系统状态空间表达式的建立方法;2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法;3、掌握相应的MATLAB 函数。
二、 实验原理设系统的模型如式(1.1)所示:⎩⎨⎧+=+=DCx y Bu Ax x ' x ''R ∈ u ∈R ’’’ y ∈R P (1.1) 其中A 为nXn 维系统矩阵、B 为nXm 维输入矩阵、C 为pXn 维输出矩阵,D 为直接传递函数。
系统的传递函数和状态空间表达式之间的关系如式(1.2)所示G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2)式(1.2)中,num(s)表示传递函数的分子阵,其维数是pXm ,den(s)表示传递函数的按s 降幂排列的分母。
表示状态空间模型和传递函数的MATLAB 函数如下:函数ss (state space 的首字母)给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D)函数tf (transfer function 的首字母)给出了传递函数,其一般形式是: G=tf(num ,den)其中num 表示传递函数中分子多项式的系数向量(单输入单输出系统),den 表示传递函数中分母多项式的系数向量。
函数tf2ss 给出了传递函数的一个状态空间实现,其一般形式是:[A,B,C,D]=tf2ss(num,den)函数ss2tf 给出了状态空间模型所描述系统的传递函数,其一般形式是:[num,den]=ss2tf(A,B,C,D,iu)其中对于多输入系统,必须确定iu 的值。
例如,若系统有三个输入u 1,u 2,u 3,则iu 必须是1、2、或3,其中1表示u 1,2表示u 2,3表示u 3。
该函数的结果是第iu 个输入到所有输出的传递函数。
三.实验步骤及结果1、应用MATLAB 对下列系统编程,求系统的A 、B 、C 、D 阵,然后验证传递函数是相同的。
利用MATLAB进行系统模型之间的相互转换

本节将讨论系统模型由传递函数变换为状态方程,反之亦
然。现讨论如何由传递函数变换为状态方程。
将闭环传递函数写为
Y (s) U (s)
=
含s的分子多项式 含s的分母多项式
=
num den
当有了这一传递函数表达式后,使用如下 MATLAB 命令:
[A, B, C, D] = tf2ss (num, den)
J=[-2+j*4 0 0;0 -2-j*4 0;0 0 -10]; JJ=poly(J) JJ=
1 14 60 200 aa1=JJ(2);aa2=JJ(3);aa3=JJ(4); %*****State feedback gain matrix K can be given by ***** K=[aa3-a3 aa2-a2 aa1-a1]*(inv(P)) K=
%*****Enter matrices A and B*****
A=[0 1 0;0 0 1;-1 -5 -6]; B=[0;0;1];
%***** Define the controllability matrix Q*****
Q=[B A*B A^2*B];
%*****Check the rank of matrix Q*****
JA=poly(A)
JA=
1.0000 6.0000 5.0000 1.0000
a1=JA(2);a2=JA(3);a3=JA(4);
%*****Define matrices W and P as follows***** W=[a2 a1 1;a1 1 0;1 0 0]; P=Q*W;
%*****Obtain the desired chracteristic polynomial by defining %the following matrix J and entering statement poly(J)*****
Matlab 控制系统 传递函数模型

MATLAB及控制系统仿真实验班级:智能0702*名:***学号:********(18)实验四控制系统数学模型转换及MATLAB实现一、实验目的熟悉MATLAB 的实验环境。
掌握MATLAB 建立系统数学模型的方法。
二、实验内容(注:实验报告只提交第2 题)1、复习并验证相关示例。
(1)系统数学模型的建立包括多项式模型(Transfer Function,TF),零极点增益模型(Zero-Pole,ZP),状态空间模型(State-space,SS);(2)模型间的相互转换系统多项式模型到零极点模型(tf2zp),零极点增益模型到多项式模型(zp2tf),状态空间模型与多项式模型和零极点模型之间的转换(tf2ss,ss2tf,zp2ss…);(3)模型的连接模型串联(series),模型并联(parallel),反馈连接(feedback)2、用MATLAB 做如下练习。
(1)用2 种方法建立系统的多项式模型。
程序如下:%建立系统的多项式模型(传递函数)%方法一,直接写表达式s=tf('s')Gs1=(s+2)/(s^2+5*s+10)%方法二,由分子分母构造num=[1 2];den=[1 5 10];Gs2=tf(num,den)figurepzmap(Gs1)figurepzmap(Gs1)grid on运行结果:易知两种方法结果一样Transfer function:sTransfer function:s + 2--------------s^2 + 5 s + 10Transfer function:s + 2--------------s^2 + 5 s + 10(2)用2 种方法建立系统的零极点模型和多项式模型。
程序如下:%方法一s=tf('s')Gs1=10*(s+1)/((s+1)*(s+5)*(s+10))% zpk模型ZPK=zpk(Gs1)%方法二% tf模型num=[10 10];den=conv([1 1],conv([1 5],[1 10]));Gs2=tf(num,den)% zpk模型ZPK=zpk(Gs2)figurepzmap(Gs1)figurepzmap(Gs1)grid on运行结果:易知两种方法结果一样Transfer function:sTransfer function:10 s + 10------------------------s^3 + 16 s^2 + 65 s + 50Zero/pole/gain:10 (s+1)------------------(s+10) (s+5) (s+1)Transfer function:10 s + 10------------------------s^3 + 16 s^2 + 65 s + 50Zero/pole/gain:10 (s+1)------------------(s+10) (s+5) (s+1)(3)如图,已知G(s)和H(s)两方框对应的微分方程是:且初始条件为零。
利用MATLAB进行系统模型之间的相互转换

J=[-2+j*4 0 0;0 -2-j*4 0;0 0 -10]; JJ=poly(J) JJ=
1 14 60 200 aa1=JJ(2);aa2=JJ(3);aa3=JJ(4); %*****State feedback gain matrix K can be given by ***** K=[aa3-a3 aa2-a2 aa1-a1]*(inv(P)) K=
%*****Enter matrices A and B*****
A=[0 1 0;0 0 1;-1 -5 -6]; B=[0;0;1];
%***** Define the controllability matrix Q*****
Q=[B A*B A^2*B];
%*****Check the rank of matrix Q*****
利用 MATLAB 求解极点配置问题
用 MATLAB 易于求解极点配置问题。现在我们来 求解系统方程为
x& = Ax + Bu
式中
⎡0 1 0 ⎤
⎡0⎤
A = ⎢⎢0 0 1 ⎥⎥,B = ⎢⎢0⎥⎥
⎢⎣− 1 −5 −6⎥⎦
⎣⎢1 ⎥⎦
采用状态反馈控制u = −Kx ,希望系统的闭环极
点为 s =μi(i=1,2,3),其中
s3
+ 14s2
s +
56s
+ 160
(1.22)
对该系统,有多个(无穷多个)可能的状态空间表达式, 其中一种可能的状态空间表达式为:
⎡ x&1 ⎤ ⎡0 1
⎢ ⎢
x& 2
⎥ ⎥
=
⎢⎢0
0
⎢⎣ x&3 ⎥⎦ ⎢⎣−160
实验一MATLAB系统地传递函数和状态空间表达式地转换

实验一 MATLAB 系统的传递函数和状态空间表达式的转换一、实验目的1、学习多变量系统状态空间表达式的建立方法;2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法;3、掌握相应的MATLAB 函数。
二、实验原理设系统的模型如式(1.1)所示:⎩⎨⎧+=+=DCx y BuAx x ' x ''R ∈ u ∈R ’’’ y ∈R P (1.1) 其中A 为nXn 维系统矩阵、B 为nXm 维输入矩阵、C 为pXn 维输出矩阵,D 为直接传递函数。
系统的传递函数和状态空间表达式之间的关系如式(1.2)所示G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2) 式(1.2)中,num(s)表示传递函数的分子阵,其维数是pXm ,den(s)表示传递函数的按s 降幂排列的分母。
表示状态空间模型和传递函数的MATLAB 函数如下:函数ss (state space 的首字母)给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D)函数tf (transfer function 的首字母)给出了传递函数,其一般形式是: G=tf(num ,den)其中num 表示传递函数中分子多项式的系数向量(单输入单输出系统),den 表示传递函数中分母多项式的系数向量。
函数tf2ss 给出了传递函数的一个状态空间实现,其一般形式是: [A,B,C,D]=tf2ss(num,den)函数ss2tf 给出了状态空间模型所描述系统的传递函数,其一般形式是: [num,den]=ss2tf(A,B,C,D,iu)其中对于多输入系统,必须确定iu 的值。
例如,若系统有三个输入u 1,u 2,u 3,则iu 必须是1、2、或3,其中1表示u 1,2表示u 2,3表示u 3。
该函数的结果是第iu 个输入到所有输出的传递函数。
三.实验步骤及结果1、应用MATLAB 对下列系统编程,求系统的A 、B 、C 、D 阵,然后验证传递函数是相同的。
matlab计算传递函数

matlab计算传递函数在MATLAB中,可以使用tf函数来计算传递函数。
传递函数是用于描述线性时间不变系统的数学表示。
它由系统的输出和输入之间的关系定义。
传递函数由分子和分母多项式构成,通常被称为B(s)和A(s)。
创建传递函数有几种不同的方式。
以下是一些常见的例子:1.使用分子和分母多项式的系数来创建传递函数。
这种方式适用于已知系统的分子和分母多项式系数的情况。
例如,要创建一个分子为s+3,分母为s^2+2s+1的传递函数,可以使用以下代码:```num = [1 3];den = [1 2 1];sys = tf(num, den);```2.使用零点和极点来创建传递函数。
这种方式适用于已知系统的零点和极点的情况。
例如,要创建一个零点为-1,极点为-2和-3的传递函数,可以使用以下代码:```z=[-1];p=[-2-3];sys = zpk(z, p, 1);```3.使用传递函数的增量形式来创建传递函数。
这种方式适用于已知系统的增量形式的情况。
例如,要创建一个传递函数1/(s+2),可以使用以下代码:```num = [1];den = [1 2];sys = tf(num, den);```完成创建传递函数后,可以对传递函数进行各种操作,例如计算阶数、零点、极点等。
以下是一些常见的操作示例:-计算传递函数的阶数:```order = order(sys);```-计算传递函数的零点和极点:```[z, p] = zpkdata(sys, 'v');```-将传递函数转换为不同的形式,例如状态空间、零极点或者增量形式:```ss_sys = ss(sys);[z, p, k] = zpkdata(sys, 'v');[num, den] = tfdata(sys);```-对传递函数进行运算,例如进行加法、减法、乘法或者除法:```sys_sum = sys1 + sys2;sys_diff = sys1 - sys2;sys_mul = sys1 * sys2;sys_div = sys1 / sys2;```-画出传递函数的阶跃响应、频率响应或者脉冲响应:```step(sys);bode(sys);impulse(sys);```上述示例只是一些基本的操作,MATLAB还提供了更多高级的函数和工具来处理和分析传递函数。
matlab中通过传递函数计算系统的极点

matlab中通过传递函数计算系统的极点最近,我在学习Matlab中如何通过传递函数来计算系统的极点,它是一个非常有趣且富有挑战性的主题。
在这篇文章中,我将根据深度和广度的要求,全面评估这个主题,并撰写一篇有价值的文章,希望能够对这个主题进行更深入的理解。
为了更好地开始探讨这个主题,首先我想解释一下什么是传递函数。
传递函数是描述线性时不变系统的特性的数学工具。
它是输出和输入之间的关系,通常用于分析和设计控制系统。
在Matlab中,我们可以通过传递函数来描述系统的动态行为,包括系统的稳定性和性能。
接下来,我将学习如何在Matlab中使用传递函数来计算系统的极点。
系统的极点是其传递函数的分母多项式的根,它们直接影响系统的稳定性和响应特性。
通过计算系统的极点,我们可以了解系统的稳定性和动态特性,这对于控制系统的设计和调整至关重要。
在Matlab中,我们可以使用“pole”命令来计算传递函数的极点。
这个命令可以直接给出系统的极点,并且非常方便。
我们还可以使用“pzmap”命令将系统的极点绘制在极坐标图上,以便更直观地了解系统的稳定性和动态特性。
这些工具为我们提供了方便快捷的方式来计算和分析系统的极点。
我个人认为,通过传递函数计算系统的极点不仅是一项重要的技能,也是控制系统工程师必备的核心知识。
对于我来说,深入理解和掌握这个技能可以帮助我更好地设计和分析控制系统,提高系统的性能和稳定性。
通过这篇文章的学习,我更清楚地了解了在Matlab中通过传递函数计算系统的极点,识别了计算系统极点的重要性,并学会了相应的计算方法。
希望通过这篇文章的撰写,我能对这个主题进行更深入的理解,并能够灵活运用到实际的工程问题中。
感谢我的文章写手对这个主题进行深入解读和撰写,使我能够更全面、深刻地理解和掌握这项技能。
让我们来深入探讨一下传递函数在控制系统工程中的重要性。
传递函数可以帮助工程师们更好地理解系统的动态特性,包括稳定性、响应速度和阻尼比等。
MATLAB环境中传递函数模型表示与转换

姓名:指导老师:成绩:学院:专业:班级:实验内容:年月日其他组员及各自发挥作用:独立完成实验内容,并进行了验证。
一、实验时间:2014年9月22日二、实验地点:课外三、实验目的:掌握在MATLAB环境中传递函数模型表示与转换四、实验设备与软件MATLAB数值分析软件五、实验原理1、连续系统传递函数的生成命令格式:sys=tf(num,den);2、连续系统zpk函数的生成命令格式:sys=zpk(z,p,k);3、传递函数模型与zpk传递函数模型间的转换命令格式:[num,den]=zp2tf(z,p,k);[z,p,k]=tf2zp(num,den);4、线性系统传递函数的零点和极点命令格式:pole/zero(sys);5、连续传递函数的静态增益6、部分分式分解和还原命令格式:[z,p,k]=residue(num,den);[num,den]=residue(z,p,k);六、实验内容、方法、过程与分析1、实验内容:自定义一个4阶稳定的连续线性系统传递函数,要求分子次数为3,编制一段程序.m将其转换成零极点形式,求零极点和静态增益,并实现部分分式分解并与手算比较。
2、实验方法:根据实验内容,利用MATLAB编程实现求解传递函数的多项式形式和零极点形式的转换,求解零极点和静态增益3、实验过程与分析(1)连续系统传递函数的生成命令格式:sys=tf(num,den);(2)连续系统zpk函数的生成命令格式:sys=zpk(z,p,k);(3)传递函数模型与zpk传递函数模型间的转换命令格式:[num,den]=zp2tf(z,p,k);[z,p,k]=tf2zp(num,den);(4)线性系统传递函数的零点和极点,连续传递函数的静态增益命令格式:pole/zero(sys);(5)部分分式分解和还原命令格式:[z,p,k]=residue(num,den);[num,den]=residue(z,p,k);七、实验结论与总结结论:1、连续系统传递函数的生成命令格式:sys=tf(num,den);2、连续系统zpk函数的生成命令格式:sys=zpk(z,p,k);3、传递函数模型与zpk传递函数模型间的转换命令格式:[num,den]=zp2tf(z,p,k);[z,p,k]=tf2zp(num,den);4、线性系统传递函数的零点和极点命令格式:pole/zero(sys);5、连续传递函数的静态增益6、部分分式分解和还原命令格式:[z,p,k]=residue(num,den);[num,den]=residue(z,p,k);总结:初步掌握MATLAB的基本语句用法,但是还需要进一步学习MATLAB 的语法,算法。
matlab根据传递函数矩阵求状态空间方程

MATLAB根据传递函数矩阵求状态空间方程在探讨MATLAB如何根据传递函数矩阵求状态空间方程之前,首先需要了解传递函数和状态空间方程的概念。
传递函数是描述线性时不变系统输入与输出之间关系的数学方法,通常用于描述信号处理、控制系统等领域中的系统行为。
而状态空间方程则是另一种描述系统动态行为的方法,它能够全面描述系统的状态随时间的变化。
在工程领域中,状态空间方程常常用于分析系统的稳定性、控制系统的设计等问题。
在MATLAB中,我们可以利用控制工具箱提供的函数来求解传递函数矩阵对应的状态空间方程。
我们需要用tf函数将传递函数表示为MATLAB中的传递函数对象,然后利用ss函数将传递函数对象转化为状态空间对象,从而得到对应的状态空间方程。
接下来,我们以一个具体的例子来演示MATLAB如何根据传递函数矩阵求状态空间方程。
假设有如下传递函数矩阵:\[ G(s) = \begin{bmatrix} \frac{2s+1}{s^2+3s+2} &\frac{3s+2}{s^2+s+1} \\ \frac{s+1}{s^2+2s+1} &\frac{4s+1}{s^2+4s+3} \end{bmatrix} \]我们希望利用MATLAB求解对应的状态空间方程。
我们可以利用tf函数将传递函数矩阵表示为MATLAB中的传递函数对象:```matlabnum = {[2 1; 3 2]; [1 1; 4 1]}; % 分子矩阵den = {[1 3 2; 1 1 1]; [1 2 1; 1 4 3]}; % 分母矩阵G = tf(num,den);```接下来,我们可以利用ss函数将传递函数对象转化为状态空间对象:```matlabsys = ss(G);```通过以上步骤,我们就可以得到对应的状态空间方程。
值得注意的是,状态空间方程通常表示为如下形式:\[ \dot{x} = Ax + Bu \]\[ y = Cx + Du \]其中,\[ A \]、\[ B \]、\[ C \]、\[ D \] 分别是状态方程的系数矩阵,\[ x \] 是系统的状态向量,\[ u \] 是系统的输入向量,\[ y \] 是系统的输出向量。
Matlab入门4,传递函数形式转换

传递函数形式转换传递函数模型可转化成零极点模型,也可转换成状态空间模型。
例一、模型转换22235(56)52530()(1)(2)32s s s s G s s s s s -+-+==-+-+% name:model_transform_01clear,clc % 清除此前运行程序的变量,清屏num1=5*[1,-5,6] % 传函分子多项式 den1=conv(conv([1,-1],[1,-1]),[1,2]) % 传函分母多项式 tfGs=tf(num1,den1) % 传函的分式形式 zpGs=zpk(tfGs) % 转换成传函的零极点形式[z,p,k]=zpkdata(zpGs,'v') % 列出零极点和比例系数 ssGs=ss(tfGs) % 转换成状态空间形式运行结果:num1 = 5 -25 30den1 = 1 0 -3 2Transfer function:5 s^2 - 25 s + 30-----------------s^3 - 3 s + 2Zero/pole/gain:5 (s-3) (s-2)-------------(s+2) (s-1)^2z = 3.00002.0000p = -2.00001.00001.0000k = 5a = x1 x2 x3x1 0 0.75 -0.25x2 4 0 0x3 0 2 0b = u1x1 4x2 0x3 0c = x1 x2 x3y1 1.25 -1.563 0.9375d = u1y1 0Continuous-time model.状态方程:XaX bu =+ 11223300.750.25440000200xx x x u x x -⎛⎫⎡⎤⎛⎫⎛⎫ ⎪ ⎪ ⎪⎢⎥=+ ⎪ ⎪ ⎪⎢⎥ ⎪ ⎪ ⎪⎢⎥⎝⎭⎣⎦⎝⎭⎝⎭输出方程:T Y c X du =+[]1231.25 1.5630.93750x y x u x ⎛⎫ ⎪=-+⋅ ⎪ ⎪⎝⎭例二、传递函数模型的串联% series exampleclear,clcnum1=[0,1];den1=[1,1];num2=[0,2];den2=[1,2];num3=[0,3];den3=[1,3];Gs1=tf(num1,den1)Gs2=tf(num2,den2)Gs3=tf(num3,den3)Gs4=series(Gs1,Gs2) % 不允许三连串Gs4=series(Gs1,Gs2,Gs3) Gs5=series(Gs4,Gs3)Gs6=Gs1*Gs2*Gs3 % 允许三连乘运行结果:Transfer function :1-----Transfer function:2-----s + 2Transfer function:3-----s + 3Transfer function:2-------------s^2 + 3 s + 2Transfer function:6----------------------s^3 + 6 s^2 + 11 s + 6Transfer function:6----------------------s^3 + 6 s^2 + 11 s + 6例三、传递函数模型的并联% parallel exampleclear,clcnum1=[0,1];den1=[1,1];num2=[0,2];den2=[1,2];num3=[0,3];den3=[1,3];Gs1=tf(num1,den1)Gs2=tf(num2,den2)Gs3=tf(num3,den3)Gs4= parallel (Gs1,Gs2) % 不允许三连并Gs4= parallel (Gs1,Gs2,Gs3) Gs5= parallel (Gs4,Gs3)Gs6=Gs1+Gs2+Gs3 % 允许三连加运行结果:Transfer function:1-----Transfer function:2-----s + 2Transfer function:3-----s + 3Transfer function:3 s + 4-------------s^2 + 3 s + 2Transfer function:6 s^2 + 22 s + 18----------------------s^3 + 6 s^2 + 11 s + 6Transfer function:6 s^2 + 22 s + 18----------------------s^3 + 6 s^2 + 11 s + 6例四、传递函数模型的反馈% feedback_example clear,clcnum1=[0,1];den1=[1,1];num2=[0,2];den2=[1,2]; num3=[0,3];den3=[1,3];Gs1=tf(num1,den1) Gs2=tf(num2,den2) Gs3=tf(num3,den3)Gs4= series (Gs1,Gs2)Gs5= feedback (Gs4,Gs3) % 建立反馈闭路的闭环传函 Gs6= feedback (Gs1*Gs2,Gs3) % 建立反馈闭路的闭环传函运行结果:Transfer function:1-----12123()1G G G s G G G =+Transfer function:2-----s + 2Transfer function:3-----s + 3Transfer function:2-------------s^2 + 3 s + 2Transfer function:2 s + 6-----------------------s^3 + 6 s^2 + 11 s + 12Transfer function:2 s + 6-----------------------s^3 + 6 s^2 + 11 s + 12例五、传递函数模型的单位反馈% unit_feedback_exampleclear,clcnum1=[0,1];den1=[1,1];num2=[0,2];den2=[1,2];Gs1=tf(num1,den1)Gs2=tf(num2,den2)[num3,den3]=series(num1,den1,num2,den2);[num4,den4]=cloop(num3,den3) % 求出单位反馈闭环传函的分子分母Gs4=tf(num4,den4) % 求出单位反馈闭环传函运行结果:Transfer function:1-----s + 1Transfer function:2-----s + 2num4 = 0 0 2 den4 = 1 3 4Transfer function:2-------------s^2 + 3 s + 4。
实验二 基于MATLAB实验平台的系统被控对象的建立与转换

实验二 基于MATLAB 实验平台的系统被控对象的建立与转换[实验目的]1.了解MATLAB 软件的基本特点和功能;2.掌握线性系统被控对象传递函数数学模型在MATLAB 环境下的表示方法及转换;3.掌握多环节串联、并联、反馈连接时整体传递函数的求取方法;4. 掌握在SIMULINK 环境下系统结构图的形成方法及整体传递函数的求取方法;5.了解在MATLAB 环境下求取系统的输出时域表达式的方法。
[实验指导]一、被控对象模型的建立在线性系统理论中,一般常用的描述系统的数学模型形式有:(1)传递函数模型——有理多项式分式表达式(2)传递函数模型——零极点增益表达式(3)状态空间模型(系统的内部模型)这些模型之间都有着内在的联系,可以相互进行转换。
1、传递函数模型——有理多项式分式表达式设系统的传递函数模型为1110111......)()()(a s a s a s a b s b s b s b s R s C s G n n n n m m m m ++++++++==---- 对线性定常系统,式中s 的系数均为常数,且a n 不等于零。
这时系统在MATLAB 中可以方便地由分子和分母各项系数构成的两个向量唯一地确定,这两个向量常用num 和den 表示。
num=[b m ,b m-1,…,b 1,b 0]den=[a n ,a n-1,…,a 1,a 0]注意:它们都是按s 的降幂进行排列的。
分子应为m 项,分母应为n 项,若有空缺项(系数为零的项),在相应的位置补零。
然后写上传递函数模型建立函数:sys=tf(num,den)。
这个传递函数便在MATLAB 平台中被建立,并可以在屏幕上显示出来。
例1:已知系统的传递函数描述如下:22642202412)(23423++++++=s s s s s s s G在MATLAB 命令窗口(Command Window )键入以下程序:>> num=[12,24,0,20];>> den=[2 4 6 2 2];>> sys=tf(num,den)回车后显示结果:Transfer function:12 s^3 + 24 s^2 + 20---------------------------------------2 s^4 + 4 s^3 + 6 s^2 + 2 s + 2并同时在MATLAB 中建立了这个相应的有理多项式分式形式的传递函数模型。
线性系统理论matlab应用

例2-3 某线性连续系统的状态方程为
x Ax Bu
y Cx Du
其中
0 1 0
A
0
0
1
6 11 6
1 0 B 2 1
0 2
1 1 0 C 2 1 1
D
0 0
0 0
采用零阶保持器将其离散化,设采样周期为0.1秒。求离散化的状态 方程模型。
解 输入以下语句,其中D=zeros(2)表示,将D赋值为2×2维的全零 矩阵。
函数的作用是合并同类项,而ilaplace( )函数的作用是求取拉 普拉斯逆变换,函数det( )的作用是求方阵的行列式。
第15页/共50页
程序执行结果
这表示
(t)
2 2
et et
e2t 2 e2t
et e2t
e
t
2
e2t
2 et e2t
x(t
)
2
et
2
e2t
第16页/共50页
2.2 线性非齐次状态方程的解
第19页/共50页
语句执行的结果为
计算结果表示系统离散化后的 状态方程为
0.9991 0.0984 0.0041
0.1099 0.0047
x(k 1) 0.0246
0.9541
0.0738
x(k)
0.1959
0.0902u(k)
传递函数、零极点增益与状态空间转换的matlab算法实现

传递函数、零极点增益与状态空间三种模型转换的MATLAB算法实现一、引言微分方程是自控控制系统最原始的数学模型,它反映系统动态运行规律。
时域分析中要用拉普拉斯变换定义传递函数,再做其它转化。
为了方便我们对自动控制理论的理解和学习,本人总结了传递函数、零极点增益与状态空间三种模型转换的MATLAB算法,用处多多。
二、状态空间模型转换为传递函数、零极点增益模型1、MATLAB算法%将状态空间模型x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)转化成传递函数G(s)=num(s)/den(s)%或零极点模型G(s)=k(s+z1)(s+z2)...(s+zm)/(s+p1)(s+p2)...(s+pn)的函数ssto2.m%调用格式G=ssto2(key,A,B,C,D),其中输入参数A,B,C,D为状态空间四个矩阵,输出参数当key=1%时为传递函数;当key=2时,为状态空间模型function G=ssto2(key,A,B,C,D)if key==1sys=ss(A,B,C,D);G=tf(sys),elseif key==2sys=ss(A,B,C,D);G=zpk(sys),end2、例题分析【例1】已知一加压液流箱系统,该系统的状态变量是液位h(t)与料浆总压H(t),输入变量是料浆流入量u1(t)与空气流入量u2(t),输出变量就是状态变量H(t)与h(t)本身,系统状态空间模型为求多个输入到输出的传递函数模型与多个输入到输出的零极点增益模型。
>>clear;A=[-0.3912,0.01234;-0.022,0];B=[0.03344,0.01234;0.000896,0];C=[1,1];D=[0,0];key=1;G=ssto2(key,A,B,C,D);key=2;G=ssto2(key,A,B,C,D);G =From input 1 to output:0.03434 s - 0.0003741--------------------------s^2 + 0.3912 s + 0.0002715From input 2 to output:0.01234 s - 0.0002715--------------------------s^2 + 0.3912 s + 0.0002715 Continuous-time transfer function.G =From input 1 to output:0.034336 (s-0.0109)------------------------(s+0.3905) (s+0.0006952)From input 2 to output:0.01234 (s-0.022)------------------------(s+0.3905) (s+0.0006952)Continuous-time zero/pole/gain model.三、传递函数模型转换为状态空间、零极点增益模型1、MATLAB算法%将传递函数模型G(s)=num(s)/den(s)转换成零极点模型%G(s)=k(s+z1)(s+z2)...(s+zm)/(s+p1)(s+p2)...(s+pn)%或状态空间模型x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)的函数%tfto2.m,函数的调用格式为G=tfto2(key,n,d)%其中输入参数n与d为传递函数分子、分母均按s的降幂排列的两个向量%输出参数key=1时,为零极点模型;key=2时,为状态空间模型%sys = tf(num,den)命令可以建立一个传递函数,其中分子和分母分别为num和den。
MATLAB控制工具箱应用及线性系统运动分析1

实验报告课程线性系统理论基础实验日期年月日专业班级姓名学号同组人实验名称控制工具箱的应用及线性系统的运动分析评分批阅教师签字一、实验目的1、学习掌握控制工具箱中的基本命令的操作方法;2、掌握线性系统的运动分析方法。
二、实验内容(1)自选控制对象模型,应用以下命令,并写出结果。
1)2, 2, 2, 2;2)2, , , 。
(2)掌握线性系统的运动分析方法1)已知,求Ate。
(用三种方法求解)2) 利用求解书上例2.8题,并画出状态响应和输出响应曲线,求解时域性能指标。
(加图标题、坐标轴标注及图标)3) 利用求解书上例2.12题([]c=),并画出状态10响应和输出响应曲线。
(加图标题、坐标轴标注及图标)4) P36 1.4(2) 1.5(3);P56 2.3(3)三、实验环境1、计算机120台;2、6软件1套。
四、实验原理(或程序框图)及步骤1、学习掌握控制工具箱中基本命令的操作设系统的模型如式(1-1)所示:p m n R y R u R x Du Cx y Bu Ax x ∈∈∈⎩⎨⎧+=+= (1-1)其中A 为n ×n 维系数矩阵;B 为n ×m 维输入矩阵;C 为p ×n 维输出矩阵;D 为p ×m 维传递矩阵,一般情况下为0。
系统的传递函数阵和状态空间表达式之间的关系如式(1-2)所示:D B A sI C s den s num s G +-==-1)()()(()( (1-2)式(1-2)中,)(s num 表示传递函数阵的分子阵,其维数是p ×m ;)(s den 表示传递函数阵的分母多项式,按s降幂排列的后,各项系数用向量表示。
五、程序源代码(1)自选控制对象模型,应用以下命令,并写出结果。
1), , , , , , , ;(系统单位阶跃响应)程序:[1,4];[1,2,8];(计算系统模型的固有频率)程序:[1];[1,10,10];[w ]()w =3.87303.87300.64550.6455:(绘制连续系统的零极点图)程序:H = ([1 -1 3],[2 1 -1]);(H):(求系统根轨迹)程序:[0 0 0 1];([1 0],[1 4(-1)]);(,[1 4(-1)]);[-4 1 -2 2];: 确定闭环根位置对应增益值K的函数()程序:([1,5,6],[1,8,3,25]);(G);[](G)(G,1);: 计算给定线性系统的伯德图程序:[1,4];[1,2,8];:从频率响应数据中计算出幅值裕度、相角裕度以及对应的频率[4];[1 2 1];0.1:1000;:绘制系统奈氏图[0 0 1 1];[1 2 0 0];2)2, 2, 2, 2;2:传递函数阵转换为状态空间模型[0 1 5 3];[1 2 3 4];[]2()A =-2 -3 -41 0 00 1 0B =1C =1 5 3D =2:状态空间模型转换为状态空间[0 1 0;0 0 14 -3 -2];[1;36];[1 0 0];0;[]2(,1)0 1.0000 5.0000 3.00001.00002.00003.00004.00002:将系统的传递函数形式转换为零点,极点,增益形式[0 1 5 3];[1 2 3 4];[z111]2()z1 =-4.3028-0.6972p1 =-1.6506 + 0.0000i-0.1747 + 1.5469i-0.1747 - 1.5469ik1 =12:将系统零极点形式转换为传递函数形式[-2 -3];[0135];3;[]2()A =-8.0000 -3.8730 0 0 3.8730 0 0 0 -3.0000 -2.3238 -1.0000 00 0 1.0000 0B =11C =0 0 0 3D =3)2, , , 。
MATLAB求解传递函数到状态方程

x1 x2 ⋮ xn
特点:n 特点:n个子系统互不相关,都是独立 的,即解耦系统
解耦系统图形
例1.6
Y(s) 6 6 = 3 = 2 u (s) s + 6s + 11s + 6 (s + 1)(s + 2)(s + 3)
展开为部分分式 可知: 状态方程
3 3 −6 = + + s +1 s + 2 s + 3
λ 1 = − 1, λ 2 = − 2 , λ 3 = − 3 c 1 = 3, c 2 = − 6, c 3 = 3
ɺ 0 x 1 1 x 1 − 1 0 x = 0 − 2 0 x ቤተ መጻሕፍቲ ባይዱ 1 u ɺ 2 2 x 3 0 0 − 3 x 3 1 ɺ
G(s) =Y(s)/U(s) =
Y (s) Z(s) = ⋅ Z(s) U (s)
(bmS +bm−1S
m
m−1
(S + an−1S
n
n−1
+...+b0)
+...+ a0)
设n>m n=m+1
Z (s) 1 = n U (s) (S + an−1S n−1 + ... + a0 ) S nZ (s) + an−1S n−1Z (s) + ... + a0Z (s) = U (s)
拉氏反变换
y = b n −1 Z n −1 + ⋯ + b 0 Z
= b n −1 x n ... + b 0 x 1
控制系统传递函数的MATLAB表示

% 状态空间模型转换成零极点增益模型
程序中,命令 tf2ss,zp2ss 及 ss2tf,ss2zp 是状态空间模型与有理分式及零、极点、增益 模型之间的相互转换。
二、传递函数框图的处理
用框图可以方便地表示传递函数的并联,串联及反馈。为简洁,仅以有理分式模型为例。
G1(s)·G2(s)
3. 反馈
G1(s)
G2(s)
G3(s)
G1(s)G2(s) 1+G1(s)G2(s) G3(s)
sysc=feedback(syss,sys3,±1) %默认值(-1) [numc, denc] = feedback(nums, dens, num3, den3)
4. 单位反馈
控制系统传递函数的 MATLAB 表示
一、传递函数的两种形式
1.有理分式形式
分别将分子、分母中 s 多项式的系数按降幂排列成行矢量,缺项的系数用 0 补齐。上述函数 可表示为 num1=[2 1] %(注意:方括号,同一行的各元素间留空格或逗号)。 den1=[1 2 2 1]
syss1=tf(num1,den1) 运行后,返回传递函数 G1 (s) 的形式。这种形式不能直接进行符号运算!
G1(s)
G2(s)
G1(s)G2(s) 1+G1(s)G2(s)
sysd = feedback(syss, 1ms, dens, 1, 1) %(单位反馈)
上面给出了同一指令的两种形式,相当于两套平行指令。 对于零极点增益形式,书写稍复杂一些,可先用 zpk 转换成系统形式,或用 zp2tf 转折换成 有理分式形式后再进行框图化简操作。
基于Matlab进行系统的传递函数的零极点求解及与空间状态表达式的转换

基于Matlab进行系统的传递函数的零极点求解及与空间状态表达式的转换
系统的传递函数的零极点求解及与空间状
态表达式的转换
一、学习目的
1、学习系统状态空间模型的建立方法、了解状态空间模型与传递函数相互转换的方法;
2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。
二、原理说明
1.根据所给系统的传递函数,依据系统的传递函数阵和状态空间表达式之间的关系,采用MATLA 的file.m 编程。
2.已知系统的传递函数求极点的matlab 编程。
三、Matlab 程序 给定系统6
11654232+++++=s s s s s G S )(,求系统的极点和空间状态模型。
程序:
num=[0 1 4 5];
den=[1 6 11 6]; sys=tf(num,den)
6
11654sys 232+++++=s s s s s
sys1=tf22p(num,den)
sys1=-2.0000+1.0000i
-2.0000-1.0000i [A,B,C,D]=tf22p(num,den) A= -6 -11 -6
1 0 0
0 1 0
B= 1
C= 1 4 5
D= 0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Matlab进行系统的传递函数的零极点求解及与空间状态表达式的转换
系统的传递函数的零极点求解及与空间状
态表达式的转换
一、学习目的
1、学习系统状态空间模型的建立方法、了解状态空间模型与传递函数相互转换的方法;
2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。
二、原理说明
1.根据所给系统的传递函数,依据系统的传递函数阵和状态空间表达式之间的关系,采用MATLA 的file.m 编程。
2.已知系统的传递函数求极点的matlab 编程。
三、Matlab 程序 给定系统6
11654232+++++=s s s s s G S )(,求系统的极点和空间状态模型。
程序:
num=[0 1 4 5];
den=[1 6 11 6]; sys=tf(num,den)
6
11654sys 232+++++=s s s s s
sys1=tf22p(num,den)
sys1=-2.0000+1.0000i
-2.0000-1.0000i [A,B,C,D]=tf22p(num,den) A= -6 -11 -6
1 0 0
0 1 0
B= 1
C= 1 4 5
D= 0。