当前位置:文档之家› 传递函数、零极点增益与状态空间转换的matlab算法实现

传递函数、零极点增益与状态空间转换的matlab算法实现

传递函数、零极点增益与状态空间转换的matlab算法实现
传递函数、零极点增益与状态空间转换的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==1

sys=ss(A,B,C,D);

G=tf(sys),

elseif key==2

sys=ss(A,B,C,D);

G=zpk(sys),

end

2、例题分析

【例1】已知一加压液流箱系统,该系统的状态变量是液位h(t)与料浆总压H(t),输入变量是料浆流入量u1(t)与空气流入量u2(t),输出变量就是状态变量H(t)与h(t)本身,系统状态空间模型为

H(t)

?(t)=?0.39120.01234

?0.0220

H(t)

?(t)+

0.033440.01234

0.0008960

u1(t)

u2(t) y1(t)

y2(t)=11

H(t)

?(t)+00

u1(t)

u2(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.0002715

From 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。输出sys 是储存传递函数数据的传递函数目标。

function G=tfto2(key,n,d)

if key==1

sys=tf(n,d);

G=zpk(sys),

elseif key==2

sys=tf(n,d);

G=ss(sys),

end

2、例题分析

,将其转换为状态空间与零极点模型。【例2】设一系统传递函数G s=6(s+4)

(s+1)(s+2)(s+3)

>> clear;n=[6 24];d=[1 6 11 6];

key=1;G=tfto2(key,n,d);

key=2;G=tfto2(key,n,d);

G =

6 (s+4)

-----------------

(s+3) (s+2) (s+1)

Continuous-time zero/pole/gain model.

G =

a =

x1 x2 x3

x1 -6 -2.75 -1.5

x2 4 0 0

x3 0 1 0

b =

u1

x1 2

x2 0

x3 0

c =

x1 x2 x3

y1 0 0.75 3

d =

u1

y1 0

Continuous-time state-space model.

四、零极点增益模型转换为状态空间、传递函数模型

1、MATLAB算法

%将零极点模型转化成传递函数模型G(s)=num(s)/den(s)或状态空间模型

%x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)的函数zpkto2.m,函数调用格式为

%G=zpkto2(key,z,p,k),其中输入参数z,p,k为系统零点、系统极点、系统增益%当输入参数key=1时,为传递函数模型,key=2时为状态空间模型function G=zpkto2(key,z,p,k)

if key==1

sys=zpk(z,p,k);

G=tf(sys),

elseif key==2

sys=zpk(z,p,k);

G=ss(sys),

end

2、例题分析

【例3】对【例2】的程序进行验证。

>> clear;k=6;z=-4;p=[-1,-2,-3];

key=1;G=zpkto2(key,z,p,k);

G =

6 s + 24

----------------------

s^3 + 6 s^2 + 11 s + 6

Continuous-time transfer function.

【例4】调用ssto2.m函数验证。

>> clear;A=[-6 -2.75 -1.5;4 0 0;0 1 0];B=[2;0;0];C=[0 0.75 3]; D=0;key=1;G=ssto2(key,A,B,C,D);

key=2;G=ssto2(key,A,B,C,D);

G =

6 s + 24

----------------------

s^3 + 6 s^2 + 11 s + 6

Continuous-time transfer function.

G =

6 (s+4)

-----------------

(s+3) (s+2) (s+1)

Continuous-time zero/pole/gain model.

遗传算法MATLAB完整代码(不用工具箱)

遗传算法解决简单问题 %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在区间[-2,2]上的最大值clc; clear all; close all; global BitLength global boundsbegin global boundsend bounds=[-2,2]; precision=0.0001; boundsbegin=bounds(:,1); boundsend=bounds(:,2); %计算如果满足求解精度至少需要多长的染色体 BitLength=ceil(log2((boundsend-boundsbegin)'./precision)); popsize=50; %初始种群大小 Generationmax=12; %最大代数 pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率 %产生初始种群 population=round(rand(popsize,BitLength)); %计算适应度,返回适应度Fitvalue和累计概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1; while Generation

控制器极点配置方法

控制器极点配置方法 如果已知系统的模型或传递函数,通过引入某种控制器,使得闭环系统的极点可以移动到指定的位置,从而使系统的动态性能得到改善。这种方法称为极点配置法。 例6-12 有一控制系统如图6-38,其中,要求设计一个控制器,使系统稳定。 图6-38 解:(1)校正前,闭环系统的极点: > 0 因而控制系统不稳定。 (2)在控制对象前串联一个一阶惯性环节,c>0,则闭环系统极点: 显然,当,时,系统可以稳定。但此对参数c 的选择依赖于 a 、b 。因而,可 选择控制器,c 、d ,则有特征方程: 当,时,系统稳定。 本例由于原开环系统不稳定,因而不能通过简单的零极点相消方式进行控制器的设计,其原因在于控制器的参数在具体实现中无法那么准确,从而可能导致校正后的系统仍不稳定。 例6-13 已知一单位反馈控制系统的开环传递函数:

要求设计一串联校正装置Gc(s) ,使校正后系统的静态速度误差系统,闭环主导极点在 处。 解:首先,通过校正前系统的根轨迹可以发现,如图6-39所示,其主导极点为: 。 图6-39 为使主导极点向左偏移,宜采用超前校正装置。 (2)令超前校正装置,可采用待定系数法确定相关参数: 又

其中、、、为待定系数。 进一步可得: 即 将代入式子可以得到:,,,。进一步可得超前校正装置的传递函数: 校正后系统的根轨迹如图6-39所示。 该校正装置与例6-7中由超前装置获取的校正装置结果基本相同,说明结果是正确的。 在matlab中,亦有相应的命令可进行极点配置,主要有三个算法可实现极点配置算法:Bass-Gura算法、Ackermann 算法和鲁棒极点配置算法。这些算法均以状态空间进行表征,通过设定期望极点位置,获取状态反馈矩阵K。下面通过示例介绍其中的一种算法。 例6-14 考虑给定的系统,其状态方程模型如下:

MATLAB课程遗传算法实验报告及源代码

硕士生考查课程考试试卷 考试科目: 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点最短路径,其中没有连接端点表示没有路径。要求设计遗传算法对该问题求解。 a e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 一、问题分析(10分) 这是一个简单的三元函数求最小值的函数优化问题,可以利用遗传算法来指导性搜索最小值。实验要求必须以matlab 为工具,利用遗传算法对问题进行求解。 在本实验中,要求我们用M 函数自行设计遗传算法,通过遗传算法基本原理,选择、交叉、变异等操作进行指导性邻域搜索,得到最优解。 二、实验原理与数学模型(20分) (1)试验原理: 用遗传算法求解函数优化问题,遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法。其采纳了自然进化模型,从代表问题可能潜在解集的一个种群开始,种群由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体;初始种群产生后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的解:在每一代,概据问题域中个体的适应度大小挑选个体;并借助遗传算子进行组合交叉和主客观变异,产生出代表新的解集的种群。这一过程循环执行,直到满足优化准则为止。最后,末代个体经解码,生成近似最优解。基于种群进化机制的遗传算法如同自然界进化一样,后生代种群比前生代更加适应于环境,通过逐代进化,逼近最优解。 遗传算法是一种现代智能算法,实际上它的功能十分强大,能够用于求解一些难以用常规数学手段进行求解的问题,尤其适用于求解多目标、多约束,且目标函数形式非常复杂的优化问题。但是遗传算法也有一些缺点,最为关键的一点,即没有任何理论能够证明遗传算法一定能够找到最优解,算法主要是根据概率论的思想来寻找最优解。因此,遗传算法所得到的解只是一个近似解,而不一定是最优解。 (2)数学模型 对于求解该问题遗传算法的构造过程: (1)确定决策变量和约束条件;

传递函数、零极点增益与状态空间转换的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==1 sys=ss(A,B,C,D); G=tf(sys), elseif key==2 sys=ss(A,B,C,D); G=zpk(sys), end 2、例题分析 【例1】已知一加压液流箱系统,该系统的状态变量是液位h(t)与料浆总压H(t),输入变量是料浆流入量u1(t)与空气流入量u2(t),输出变量就是状态变量H(t)与h(t)本身,系统状态空间模型为 H(t) ?(t)=?0.39120.01234 ?0.0220 H(t) ?(t)+ 0.033440.01234 0.0008960 u1(t) u2(t) y1(t) y2(t)=11 H(t) ?(t)+00 u1(t) u2(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.0002715 From input 2 to output: 0.01234 s - 0.0002715

遗传算法Matlab程序

% f(x)=11*sin(6x)+7*cos(5x),0<=x<=2*pi; %%初始化参数 L=16;%编码为16位二进制数 N=32;%初始种群规模 M=48;%M个中间体,运用算子选择出M/2对母体,进行交叉;对M个中间体进行变异 T=100;%进化代数 Pc=0.8;%交叉概率 Pm=0.03;%%变异概率 %%将十进制编码成16位的二进制,再将16位的二进制转成格雷码 for i=1:1:N x1(1,i)= rand()*2*pi; x2(1,i)= uint16(x1(1,i)/(2*pi)*65535); grayCode(i,:)=num2gray(x2(1,i),L); end %% 开始遗传算子操作 for t=1:1:T y1=11*sin(6*x1)+7*cos(5*x1); for i=1:1:M/2 [a,b]=min(y1);%找到y1中的最小值a,及其对应的编号b grayCodeNew(i,:)=grayCode(b,:);%将找到的最小数放到grayCodeNew中grayCodeNew(i+M/2,:)=grayCode(b,:);%与上面相同就可以有M/2对格雷码可以作为母体y1(1,b)=inf;%用来排除已找到的最小值 end for i=1:1:M/2 p=unidrnd(L);%生成一个大于零小于L的数,用于下面进行交叉的位置if rand()

系统函数的零极点分布决定时域特性

摘要 本文详细分析了系统函数零极点的分布与冲击响应时域特性之间的关系。首先论述了如何通过MATLAB软件绘制出系统函数的零极点分布图。然后根据系统函数极点的不同分布情况,通过MATLAB软件绘制出冲击响应的时域函数,通过对图像的观察和比较,得出了极点的类型决定时间函数的时间连续形式,极点在S平面的位置决定时间函数的波形特点。最后,在极点相同,但零点不同的情况下,通过比较时域函数的波形,得出零点分布与时域函数的对应关系,即零点分布的情况只影响到时域函数的幅度和相位。 关键词:系统函数的零极点;时域特性;MATLAB软件

目录 1课程设计目的 (1) 2实验原理 (1) 3实现过程 (1) 3.1MATLAB简介 (1) 3.2系统函数极点分布情况 (2) 3.2.1极点为单实根 (2) 3.2.2极点为共轭复根 (2) 3.2.3极点为重根 (2) 3.2.4用MATLAB绘制系统函数的零极点分布图 (2) 3.3系统函数的零极点分布与冲击响应时域特性的关系 (6) 3.3.1用MATLAB绘制冲击响应的时域函数 (6) 3.3.2极点的类型决定时间函数的时间连续形式 (19) 3.3.3极点在S平面的位置决定时间函数的波形特点 (19) 3.3.4零点分布与时域函数的对应关系 (19) 4设计体会 (23) 5参考文献 (24)

1 课程设计目的 1.掌握系统函数的零极点分布与系统冲激响应时域特性之间的关系。 2.学习MATLAB 软件知识及应用。 3.利用MATLAB 编程,完成相应的信号分析和处理。 2 实验原理 拉普拉斯变换将时域函数f(t)变换为s 域函数F(s);反之,拉普拉斯逆变换将F(s)变换为相应的f(t)。由于f(t)与F(s)之间存在一定的对应关系,故可以从函数F(s)的典型形式透视出f(t)的内在性质。当F(s)为有理函数时,其分子多项式和分母多项式皆可分解为因子形式,各项因子指明了F(s)零点和极点的位置,显然,从这些零点和极点的分布情况,便可确定原函数的性质。 设连续系统的系统函数为)(s H ,冲激响应为)(t h ,则 ?+∞ -=0)()(dt e t h s H st 显然,)(s H 必然包含了)(t h 的本质特性。 对于集中参数的LTI 连续系统,其系统函数可表示为关于s 的两个多项式之比,即 其中),,2,1(M j q j =为)(s H 的M 个零点,),,2,1(N i p i =为)(s H 的N 个极点。 3 实现过程 3.1 MATLAB 简介 MALAB 译于矩阵实验室(MATrix LABoratory ),是用来提供通往 LINPACK 和EISPACK 矩阵软件包接口的。后来,它渐渐发展成了通用科技计算、图视交互系统和程序语言。 MATLAB 的基本数据单位是矩阵。它的指令表达与数学、工程中常用的习惯形式十分相似。比如,矩阵方程Ax=b ,在MATLAB 中被写成A*x=b 。而若要通过A ,b 求x ,那么只要写x =A \b 即可,完全不需要对矩阵的乘法和求逆进行编程。因此,用MATLAB 解算问题要比用C 、Fortran 等语言简捷得多。 MATLAB 发展到现在,已经成为一个系列产品:MATLAB “主包”和各种可选的toolbox “工具包”。主包中有数百个核心内部函数。迄今所有的三十几个工具包又可分为两类:功能性工具包和学科性工具包。功能性工具包主要用来扩充MATLAB 的符号计 ∏∏1 1) -()-() () ()(N i i M j j p s q s C s A s B s H ====

传递函数零极点对系统性能的影响

现代工程控制理论实验报告 学生姓名:??任课老师:???? 学号:??班级:

实验三:传递函数零极点对系统性能得影响 一、实验内容及目得 实验内容: 通过增加、减少与改变高阶线性系统得零极点,分析系统品质得变化,从中推导出零极点与系统各项品质之间得关系,进而总结出高阶线性系统得频率特性。 实验目得: (1)通过实验研究零极点对系统品质得影响,寻找高阶线性系统得降阶方法,总结高阶系统得时域特性。 (2)练习使用MATLAB语言得绘图功能,提高科技论文写作能力,培养自主学习意识。 二、实验方案及步骤 首先建立MATLAB脚本文件,使其能够绘出在阶跃输入下特征多项式能够变化得高阶线性系统得响应曲线。之后在以下六种情况下绘出响应曲线,分别分析其对系统输出得影响。 (1)改变主导极点,增减、改变非主导极点,加入非负极点,绘出多组线性系统在阶跃信号下得响应曲线。 (2)在不引入对偶奇子得前提下,加入非负极点,绘出多组线性系统在阶跃信号下得响应曲线。 (3)引入对偶奇子,绘出多组线性系统在阶跃信号下得响应曲线。

(4)探究系统稳定条件下单调曲线、振荡曲线得形成与零极点之间得关系. 三、实验结果分析 1、研究极点对系统品质得影响 (1)改变主导极点,得到得输出曲线如下: 将系统品质以表格方式列于下方。 主导极点-1、5 -0、5 -0、25

从两张图片中不难发现,在极点都就是负数得条件下,当主导极点出现较小变动时,整条输出曲线会出现很大得变化。 从表格中可以发现当主导极点由负半轴向原点靠近时,超调量、稳定时间逐渐增大,而且这两项指标得变化速率随着主导极点离原点得距离减小而增大。衰减率则出现轻微得先增大后减小得趋势,猜测在主导极点由负半轴向原点靠近得过程中,衰减率存在极值。 将两幅图片中发现得规律总结如下: (1)主导极点对系统品质有很大影响。 (2)在极点都小于零得条件下,主导极点得代数值越小,系统得准确性越好、快速性也越好。 (2)增减、改变非主导极点,得到得输出曲线如下:

遗传算法经典MATLAB代码资料讲解

遗传算法经典学习Matlab代码 遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈0.01。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程 %----------------------------------------------- % 2.1初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),

% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 2.2 计算目标函数值 % 2.2.1 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: decodebinary.m %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 % 2.2.2 将二进制编码转化为十进制数(2) % decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置

极点配置直接自校正控制最小相位确定性系统Word文档

%极点配置直接自校正控制(最小相位确定性系统) 设被控对象为开环不稳定最小相位系统: ()2(1) 1.1(2)(3)0.5(4)y k y k y k u k u k --+-=-+- 期望传递函数分母多项式为: 112()1 1.32050.4966m A z z z ---=-+ 取遗忘因子=1,期望输出y r (k )为幅值为10的方波信号。 clear all;close all; a=[1 -2 1.1];b=[1 0.5];d=3; %对象参数 Am=[1 -1.3 0.5]; %期望闭环特征多项式 na=length(a)-1;nb=length(b)-1; nam=length(Am)-1; nf=nb+d-1;ng=na-1; %确定多项式A0 na0=2*na-nam-nb-1; %观测器最低阶次 A0=1; for i=1:na0 A0=conv(A0,[1 0.3-i*0.1]); %生成观测器 end AA=conv(A0,Am);naa=na0+nam;

nfg=max(naa,max(nf,ng)); %用于ufk, yuf更新 nr=na0; %R的阶次 L=400; uk=zeros(d+nb,1); ufk=zeros(d+nfg,1); %滤波输入的初值 yk=zeros(max(na,d),1); yfk=zeros(d+nfg,1); yrk=zeros(max(na,d),1); yr=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)] ; %RELS初值设定 thetae_1=0.001*ones(nf+ng+2,1); P=10^6*eye(nf+ng+2); lambda=1; %遗忘因子 for k=1:L time(k)=k; y(k)=-a(2:na+1)*yk(1:na)+b*uk(d:d+nb); ufk(d)=-AA(2:naa+1)*ufk(d+1:d+naa)+uk(d); %滤波输入输出

matlab实验四 系统的零极点分析

实验四连续时间系统复频域分析和离散时间系统z域分析 一.实验目的: 1.掌握连续信号拉氏变换和拉氏反变换的基本实现方法。 2.熟悉laplace函数求拉普拉斯变换,ilaplace函数求拉氏反变换 的使用。 3.掌握用ztrans函数,iztrans函数求离散时间信号z变换和逆z 变换的基本实现方法。 4.掌握用freqs函数,freqz函数由连续时间系统和离散时间系统 系统函数求频率响应。 5.掌握zplane零极点绘图函数的使用并了解使用零极点图判断系 统稳定性的原理。 二、实验原理: 1.拉氏变换和逆变换 原函数()() ?象函数 f t F s 记作:[()]() =→拉氏变换 L f t F s 1[()]() -=→拉氏反变换 L F s f t 涉及函数:laplace,ilapace. 例如:

syms t;laplace(cos(2*t)) 结果为:ans =s/(s^2+4) syms s;ilaplace(1./(s+1)) 结果为:ans = exp(-t) 2. 系统传递函数H(s)或H(z)。 12121212...()()()...m m m n n n b s b s b B s H s A s a s a s a ----+++==+++ 112112...()()()...m m m n n n b z b z b B z H z A z a z a z a --+--++++==+++ 其中,B 为分子多项式系数,A 为分母多项式系数。 涉及函数:freqz,freqs. 3. 系统零极点分布与稳定性的判定。 对于连续时间系统,系统极点位于s 域左半平面,系统稳定。 对于离散时间系统,系统极点位于z 域单位圆内部,系统稳定。 涉及函数:zplane. 三、 实验内容 1. 验证性实验 a) 系统零极点的求解和作图

自校正控制系统分析

自校正控制系统分析 摘要:本文介绍了自校正控制系统的基本结构,主要介绍了基于PID 结构的间接自校正控制系统的控制算法,并通过实例仿真结果,表明了自校正PID 控制不仅需要调整的参数少,而且还能够根据对象特性的变化在线修改这些参数,增强了控制器的自适应能力。 关键字:自校正控制系统;PID 控制;自适应能力 1 引言 自校正控制系统主要由参数估计器、控制器设计、控制器和被控对象4部分组成,如图1所示。该系统内环由被控对象和可调控制器组成,外环则由过程模型参数估计器和控制器参数计算器所组成,其任务是辨识过程参数再按选定的设计方法综合出控制器参数,用以修改内环的控制器。这类系统的特点是必须对过程或者被控对象进行在线辨识估计器,然后用对象参数估计值和事先规定的性能指标在线综合出调节器的控制参数,并根据此控制参数产生的控制作用对被控对象进行控制经过多次地辨识和综合调节参数可以使系统的性能指标趋于最优。 图1 自适应控制系统结构图 自适应控制算法对于复杂系统能够达到较好的控制精度跟踪速度以及稳定性,其实时性好,算法简单,易于实现。然而,在PID 控制中,一个至关重要的问题就是PID 参数的整定。典型的PID 参数整定方法是在获取被控对象数学模型的基础上,根据某一整定规则来确定参数。PID 参数整定的优劣,不但会影响到控制质量,而且会影响到控制系统的稳定性和鲁棒性。本文介绍了基于PID 结构的间接自校正控制。 2 基于PID 结构的间接自校正控制 自校正PID 控制算法的设计思想是: 以极点配置控制律为控制器基本形式,引入递推算法估计对象参数,并将估计结果按极点配置法进行控制器参数的设计。下面介绍自校正PID 控制器。 被控对象为 )()()()()(11k e k u z B z k y z A d +=--- (1) 式中,u(k),y(k)表示系统的输入和输出,e(k)为外部扰动,d ≥为纯延迟,且221111)(---++=z a z a z A ,21101)(---+???++=z b z b b z B b n 。 对系统(1)采用PID 控制,此时,对应的PID 控制器可表示为 )()()()()()(1111k y z R k y z R t u z F r ----= (2) ?=--)()(1 11z F z F (3) 过 程过程模型参数估计器 可调控制器 输出控制量输入 过程参数 控制器 参 数 控制器参数 计算器

传递函数零极点对系统性能的影响

现代工程控制理论实验报告 学生:任课老师: 学号:班级:

实验三:传递函数零极点对系统性能的影响 一、实验容及目的 实验容: 通过增加、减少和改变高阶线性系统 21.05 (s+s+1)(0.5s+1)(0.125s+1) 的零极点,分析系统品质的变化,从中推导出零极点和系统各项品质之间的关系,进而总结出高阶线性系统的频率特性。 实验目的: (1)通过实验研究零极点对系统品质的影响,寻找高阶线性系统的降阶方法,总结高阶系统的时域特性。 (2)练习使用MATLAB语言的绘图功能,提高科技论文写作能力,培养自主学习意识。 二、实验方案及步骤 首先建立MATLAB脚本文件,使其能够绘出在阶跃输入下特征多项式能够变化的高阶线性系统的响应曲线。之后在以下六种情况下绘出响应曲线,分别分析其对系统输出的影响。 (1)改变主导极点,增减、改变非主导极点,加入非负极点,绘出多组线性系统在阶跃信号下的响应曲线。 (2)在不引入对偶奇子的前提下,加入非负极点,绘出多组线性系统在阶跃信号下的响应曲线。

(3)引入对偶奇子,绘出多组线性系统在阶跃信号下的响应曲线。 (4)探究系统稳定条件下单调曲线、振荡曲线的形成与零极点之间的关系。 三、实验结果分析 1、研究极点对系统品质的影响 (1)改变主导极点,得到的输出曲线如下: 将系统品质以表格方式列于下方。

从两图片中不难发现,在极点都是负数的条件下,当主导极点出现较小变动时,整条输出曲线会出现很大的变化。 从表格中可以发现当主导极点由负半轴向原点靠近时,超调量、稳定时间逐渐增大,而且这两项指标的变化速率随着主导极点离原点的距离减小而增大。衰减率则出现轻微的先增大后减小的趋势,猜测在主导极点由负半轴向原点靠近的过程中,衰减率存在极值。 将两幅图片中发现的规律总结如下: (1)主导极点对系统品质有很大影响。 (2)在极点都小于零的条件下,主导极点的代数值越小,系统的准确性越好、快速性也越好。 (2)增减、改变非主导极点,得到的输出曲线如下:

基于遗传算法的matlab源代码

function youhuafun D=code; N=50;%Tunable maxgen=50;%Tunable crossrate=0.5;%Tunable muterate=0.08;%Tunable generation=1; num=length(D); fatherrand=randint(num,N,3); score=zeros(maxgen,N); while generation<=maxgen ind=randperm(N-2)+2;%随机配对交叉 A=fatherrand(:,ind(1:(N-2)/2)); B=fatherrand(:,ind((N-2)/2+1:end)); %多点交叉 rnd=rand(num,(N-2)/2); ind=rnd tmp=A(ind); A(ind)=B(ind); B(ind)=tmp; %%两点交叉 %for kk=1:(N-2)/2 %rndtmp=randint(1,1,num)+1; %tmp=A(1:rndtmp,kk); %A(1:rndtmp,kk)=B(1:rndtmp,kk); %B(1:rndtmp,kk)=tmp; %end fatherrand=[fatherrand(:,1:2),A,B]; %变异 rnd=rand(num,N); ind=rnd[m,n]=size(ind); tmp=randint(m,n,2)+1; tmp(:,1:2)=0; fatherrand=tmp+fatherrand; fatherrand=mod(fatherrand,3); %fatherrand(ind)=tmp; %评价、选择 scoreN=scorefun(fatherrand,D);%求得N个个体的评价函数 score(generation,:)=scoreN; [scoreSort,scoreind]=sort(scoreN); sumscore=cumsum(scoreSort); sumscore=sumscore./sumscore(end); childind(1:2)=scoreind(end-1:end); for k=3:N tmprnd=rand; tmpind=tmprnd difind=[0,diff(t mpind)]; if~any(difind) difind(1)=1; end childind(k)=scoreind(logical(difind)); end fatherrand=fatherrand(:,childind); generation=generation+1; end %score maxV=max(score,[],2); minV=11*300-maxV; plot(minV,'*');title('各代的目标函数值'); F4=D(:,4); FF4=F4-fatherrand(:,1); FF4=max(FF4,1); D(:,5)=FF4; save DData D function D=code load youhua.mat %properties F2and F3 F1=A(:,1); F2=A(:,2); F3=A(:,3); if(max(F2)>1450)||(min(F2)<=900) error('DATA property F2exceed it''s range (900,1450]') end %get group property F1of data,according to F2value F4=zeros(size(F1)); for ite=11:-1:1 index=find(F2<=900+ite*50); F4(index)=ite; end D=[F1,F2,F3,F4]; function ScoreN=scorefun(fatherrand,D) F3=D(:,3); F4=D(:,4); N=size(fatherrand,2); FF4=F4*ones(1,N); FF4rnd=FF4-fatherrand; FF4rnd=max(FF4rnd,1); ScoreN=ones(1,N)*300*11; %这里有待优化

第三章 状态-输入间的传递函数(补)

一、状态-输入间的传递函数 [例] 判断下列系统的能控性,并求状态-输入间的传递函数。 [解] 因为 u x x x x x x ??????????+????????????????????---=??????????011310301100321321 []???? ? ?????-=321210x x x y [] 22103111012=?? ?? ? ?????---==rank b A Ab b rank rankQ c 所以系统是不完全能控的。 状态-输入间的传递函数 ???? ? ?????+++=??? ? ? ?????++++++???? ? ????????? ? ?????+---=--132)1(113423)1(10113103110)() ()(22231 1s s s s s s s s s s s s b A sI s U s X == ------------------------------------------------------------------------------ 由此例可以看出,系统不完全能控,在求状态-输入间的传递函数时,出现了零极点对消现象,显然此时系统的传递函数b A sI c 1 )(--中必会出现零极点对消现象。 定理 对单输入系统,b A sI 1 )(--无零极点对消是系统完全能控的充分必要条件。 注意,此定理对多输入系统仅是必要条件。 ------------------------------------------------------------------------------ [例] 判断下列系统的能控性,并求状态-输入间的传递函数和系统的传递函数。 x y u x x ? ? ? ???=???? ??????+??????????=100001,010010100240231 [解] 因为 301010101002001101210=?? ?? ? ?????=rank rankQ c 所以系统是状态完全能控的。其状态-输入间的传递函数为

遗传算法的MATLAB程序实例

遗传算法的程序实例 如求下列函数的最大值 f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] 一、初始化(编码) initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度), 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 代码: %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 二、计算目标函数值 1、将二进制数转化为十进制数(1) 代码: %Name: decodebinary.m %产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和例数 for i=1:py pop1(:,i)=2.^(py-1).*pop(:,i); py=py-1; end pop2=sum(pop1,2); %求pop1的每行之和 2、将二进制编码转化为十进制数(2) decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置。(对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1),参数1ength表示所截取的长度(本例为10)。 代码: %Name: decodechrom.m %将二进制编码转换成十进制 function pop2=decodechrom(pop,spoint,length) pop1=pop(:,spoint:spoint+length-1); pop2=decodebinary(pop1); 3、计算目标函数值 calobjvalue.m函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

零极点对系统的影响

增加零极点以及零极点分布对系统的影响一般说来,系统的极点决定系统的固有特性,而零点对于系统的暂态响应和频率响应会造成很大影响。以下对于零极点的分布研究均是对于开环传递函 数。 零点一般是使得稳定性增加,但是会使调节时间变长,极点会使调节时间变短,是系统反应更快,但是也会使系统的稳定性变差。在波特图上反应为,增加一个零点会在幅频特性曲线上增加一个+20db/10倍频的曲线,幅频曲线上移,增加一个极点,会在幅频特性曲线上增加一个-20db/10倍频的曲线,幅频曲线下移。 在s左半平面增加零点时,会增加系统响应的超调量,带宽增大,能够减小系统的调节时间,增快反应速度,当零点离虚轴越近,对系统影响越大,当零点实部远大于原二阶系统阻尼系数ξ时,附加零点对系统的影响减小,所以当零点远离虚轴时,可以忽略零点对系统的影响。从波特图上来看,增加一个零点相当于增加一个+20db/10倍频的斜率,可以使的系统的相角裕度变大,增强系统的稳定性。 在s右半平面增加零点,也就是非最小相位系统,非最小相位系统的相位变化范围较大,其过大的相位滞后使得输出响应变得缓慢。因此,若控制对象是非最小相位系统,其控制效果特别是快速性一般比较差,而且校正也困难。对于非最小相位系统而言,当频率从零变化到无穷大时,相位角的便变化范围总是大于最小相位系统的相角范围,当ω等于无穷大时,其相位角不等于-(n-m)×90o。非最小相位系统存在着过大的相位滞后,影响系统的稳定性和响应的快速性。 在s左半平面增加极点时,系统超调量%pσ减小,调整时间st(s)增大,从波特图上看,s左半平面增加一个极点时,会在幅频特性曲线上增加一个- 20db/10倍频的曲线,也就意味着幅频特性曲线会整体下移,导致相角域度减小,从而使得稳定性下降。当极点离原点越近,就会增大系统的过渡时间,使得调节时间增加,稳定性下降,当系统影响越大当极点实部远大于原二阶系统

8 传递函数矩阵的零极点

第七章:矩阵分式描述 传递函数矩阵的矩阵分式描述是复出频域理论中表征线性时不变系统输入输出关系的一种基本模型。 采用矩阵分式描述(MFD )和多项式矩阵理论可使线性时不变系统的频域分析和综合的理论和方法简便和实用。 主要介绍:1、矩阵分式描述的形式和构成 2、矩阵分式描述的真性和严真性 3、矩阵分式描述的不可简约性 7-1 矩阵分式描述的基本概念 矩阵分式描述(MFD )的实质:就是把有理分式矩阵形式的传递函数矩阵G(s)表示为两个多项式矩阵之比。 MFD 形式上是对标量有理分式形式传递函数g(s)相应表示的一种推广 右MFD : 对p 输入,q 输出线性时不变系统。有理分式矩阵G(s),存在多项式矩阵p q s N ?)(和多项式矩阵p p s D ?)(使下式成立: 称p p p q s D s N ?-?)()(1为G(s)的一个右MFD 。 左MFD :p q L q q L p q s N s D s G ??-?=)()()(1 称p q L q q L s N s D ??-)()(1 为G(s)的一个左MFD 。 例:8.1 构造G(s)的一个右MFD ,=)(s G ?? ???++++?????210 210 1 1 2s s s s s s 方法:先确定各列的最小公分母,)2(1+=s s d c 22s d c = )2(3+=s d c 1 2 22)2(10)1(012210 ) 2() 1(01 ) 2(2)(-???? ? ?????++?? ???+++???? ? =?????++++++????? =s s s s s s s s s s s s s s s s s s s G p p p q p q s D s N s G ?-??=)()()(1

相关主题
文本预览
相关文档 最新文档