文档库 最新最全的文档下载
当前位置:文档库 › 基于MATLAB的状态观测器设计

基于MATLAB的状态观测器设计

基于MATLAB的状态观测器设计
基于MATLAB的状态观测器设计

基于MATLAB 的状态观测器设计

预备知识: 极点配置

基于状态反馈的极点配置法就是通过状态反馈将系统的闭环极点配置到期望的极点位置上,从而使系统特性满足要求。 1. 极点配置原理

假设原系统的状态空间模型为:

???=+=Cx

y Bu Ax x 若系统是完全可控的,则可引入状态反馈调节器,且:

Kx u input -=

这时,闭环系统的状态空间模型为:

???=+-=Cx

y Bu x )BK A (x 2. 极点配置的MATLAB 函数 在MATLAB 控制工具箱中,直接用于系统极点配置的函数有acker()和place()。调用格式为:

K=acker(A,C,P) 用于单输入单输出系统

其中:A ,B 为系统矩阵,P 为期望极点向量,K 为反馈增益向量。 K=place(A,B,P)

(K,prec,message)=place(A,B,P)

place()用于单输入或多输入系统。Prec 为实际极点偏离期望极点位置的误差;message 是当系统某一非零极点偏离期望位置大于10%时给出的警告信息。 3. 极点配置步骤:

(1)获得系统闭环的状态空间方程;

(2)根据系统性能要求,确定系统期望极点分布P ;

(3)利用MATLAB 极点配置设计函数求取系统反馈增益K ; (4)检验系统性能。

已知系统模型

如何从系统的输入输出数据得到系统状态?

初始状态:由能观性,从输入输出数据确定。

不足:初始状态不精确,模型不确定。

思路:构造一个系统,输出逼近系统状态

称为是的重构状态或状态估计值。实现系统状态重构的系统称为状态观

测器。

观测器设计

状态估计的开环处理:

但是存在模型不确定性和扰动!初始状态未知!

应用反馈校正思想来实现状态重构。

通过误差来校正系统:状态误差,输出误差。

基于观测器的控制器设计

系统模型

若系统状态不能直接测量,

可以用观测器来估计系统的状态。

L是观测器增益矩阵,对偏差的加权。

真实状态和估计状态的误差向量

误差的动态行为:

的极点决定了误差是否衰减、如何衰减?通过确定矩阵L来保证。也即极点配置问题。

要使得误差衰减到零,需要选取一个适当的矩阵L,使得A-LC是稳定的。若能使得矩阵A-LC有适当的特征值,则可以使得误差具有一定的衰减率。

由于

因此,问题转化为的极点配置问题。

该极点配置问题可解的条件:

能控;等价于能观

定理:系统可以任意配置观测器极点的充分必要条件是(C, A)能观。

观测器的增益矩阵可以按照极点配置方法来设计,

求解的极点配置问题,得到增益矩阵k;

观测器增益矩阵

例考虑由以下系数矩阵给定的系统

设计一个观测器,使观测器两个极点都是-2。

检验系统的能观性:

系统是能观的,因此问题可解。

要求确定观测器增益矩阵

使得矩阵A-LC具有两个相同的特征值-2。由于

期望的特征值多项式是

比较两个多项式,可以得到,

所求的观测器是

也可利用MATLAB 命令来计算观测器增益矩阵:

L=(acker(A ’,C ’,V))’ L=(place(A ’,C ’,V))’

观测器设计时注意的问题:

(1)观测器极点比系统极点快2~5倍; (2)并非越快越好。

例2:某系统

u x X ????

??????+??????????-----=102101110221

[]x y 001=

首先对系统的能控性进行判断,以编程方式实现 a=[-1 -2 -2;0 -1 1;1 0 -1];

b=[2;0;1]; %输入a ,b 矩阵 q=[b a*b a^2*b] rank(q)

计算结果为

????

??????--=511010042q

q 的秩为3,因此该系统为完全能控型系统,在满足系统要求的前提下,理论上能任意配置期望极点。

观测器的设计

首先检验系统的是否完全能观

a=[-1 -2 -2;0 -1 1;1 0 -1]; c=[1 0 0];

q=[c;c*a;c*a*a] rank(q)

????

??????----=241221001q

rank(q)=3

说明系统是完全能观的

下面就是观测器期望极点选择,一般为了考虑观测器的响应速度要比闭环系统快,又要考虑干扰抑制,一般极点为闭环极点的2---5倍。

根据主导二阶极点方法所配置的极点为s1=-4 s2,3=-1±0.88i 选择观测器极点为s1=-12 s2,3=-3±0.88i

由此可进一步求出观测器增益矩阵l a=[-1 -2 -2;0 -1 1;1 0 -1]; c=[1 0 0];

pe=[-12;-3+0.88*i;-3-0.88*i]; lt=acker(a',c',pe); l=lt'

求得l=[15;1.872;-25.2592];

下面可构建Simulink 图,据此观察观测器的跟踪能力

跟踪效果图如下

可见,单路跟踪效果较好。

利用状态空间,可以方便地设计全维观测器,

各路跟踪效果如下:

12345678910

0123456789

10

据此发现观测器跟踪效果较好。

利用状态估计值的反馈控制器是

基于观测器的输出反馈控制系统结构图:

例3:系统状态空间模型的系数矩阵:

状态反馈控制器:

闭环矩阵:

特征多项式:

选取

则闭环极点

状态不可测,设计状态观测器。

选取观测器极点:

应用极点配置方法,可得观测器增益矩阵

观测器模型:

根据分离性原理,由以上分别得到的状态反馈和观测器增益矩阵可构造基于观测器的输出反馈控制器:

系统的动态特性:

对象和误差的初始条件:

系统曲线:

总结

从以上的设计可总结出状态空间的控制器的设计思路。

1.首先对观测器的能观性与能控性进行判断;

2.如果完全能观或能控,则进行以下分析;如果不是,可以进行能控与能观分

解出来;

3.如果使用原系统状态反馈,可以根据系统要求进行极点配置,进而设计出控

制器;如果还需要设计观测器,可合理配置观测器极点,进而设计整个系统。

4.如果使用观测器状态反馈,由于分离定理,观测器与反馈可分别设计,所以

设计过程基本和上面一样;

5.对于以上系统都存在较大的余差,故需设计参考输入,或者采取积分控制器

都可以很好的消除稳态余差。

实验-6-极点配置与全维状态观测器的设计

实验 6 极点配置与全维状态观测器的设计 一、实验目的 1. 加深对状态反馈作用的理解。 2. 学习和掌握状态观测器的设计方法。 二、实验原理 在 MATLAB 中,可以使用 acker 和 place 函数来进行极点配置,函数的使用方法如下: K = acker(A,B,P) A, B为系统系数矩阵, P 为配置极点, K 为反馈增益矩阵。 K = place(A,B,P) A,B 为系统系数矩阵, P 为配置极点, K 为反馈增益矩阵。 [K,PREC,MESSAGE] = place(A,B,P), AB为系统系数矩阵, P为配置极点, K为反馈增益矩阵, PREC 为特征值, MESSAGE 为配置中的出错信息。 三、实验内容 1. 已知系统 1)判断系统稳定性,说明原因。 2)若不稳定,进行极点配置,期望极点:-1,-2, -3,求出状态反馈矩阵k。 3)讨论状态反馈与输出反馈的关系,说明状态反馈为何能进行极点配置? 4)使用状态反馈进行零极点配置的前提条件是什么? 1. (1) (2)代码: a=[-2 -1 1;1 0 1;-1 0 1]; b=[1,1,1]'; p=[-1,-2,-3]'; K=acker(a,b,p) -1 2 4 3)讨论状态反馈与输出反馈的关系 , 说明状态反馈为何能进行极点配置在经典控制理论 中 ,一般只考虑由系统的输出变量来构成反馈律,即输出反馈。在现代控制理论的状态空间分析方法中 ,多考虑采用状态变量来构成反馈律,即状态反馈。从状态空间模型输出方程可以看出,输出反馈可视为状态反馈的一个特例。状态反馈可以提供更多的补偿信息,只要状态进行简单的计算再反馈,就可以获得优良的控制性能。

matlab课程教学设计(简单计算器的设计)

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

实验四 全维状态观测器的设计

信控学院上机实验 实 验 报 告 课程 线代控制理论基础 实验日期 2020 年 5 月 10 日 专业班级 自动化1702班 姓名 WGX 学号 同组人 实验名称 实验四 全维状态观测器的设计 评分 批阅教师签字 一、 实验目的 1. 学习用状态观测器获取系统状态估计值的方法,了解全维状态观测器的 极点对状态的估计误差的影响; 2. 掌握全维状态观测器的设计方法; 3. 掌握带有状态观测器的状态反馈系统设计方法。 二、实验环境 1、计算机 120 台; 2、MATLAB6.X 软件 1 套。 三、实验内容 开环系统? ??=+=cx y bu Ax x &,其中 []0100001,0,10061161A b c ???? ????===???? ????--???? a) 用状态反馈配置系统的闭环极点:5,322-±-j ; b) 设计全维状态观测器,观测器的极点为:10,325-±-j ; c) 研究观测器极点位置对估计状态逼近被估计值的影响; d) 求系统的传递函数(带观测器及不带观测器时); e) 绘制系统的输出阶跃响应曲线。 四、程序源代码 具体程序见电子文档(实验四源代码) 五、实验步骤及结果分析 设系统完全可观测,可得到如图1.1所示的状态观测器:

图1.1 (a): 运行结果如下: K1 = 74 25 15 sysnew = A = x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -80 -36 -9 B = u1 x1 0 x2 0 x3 1 C = x1 x2 x3 y1 1 0 0 D = u1 y1 0 Continuous-time state-space model. >>

用MATLAB做一个计算器_包括加减乘除_平方_清空等功能

广西科技大学MATLAB课程设计说明书 课题:设计简易计算器 开发环境:MATLAB GUIDE 作者: 系别: 专业: 时间:

实验目的:1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 实验环境: 编程软件:MATLAB7.0 实验内容与结果: 使用MATLAB的GUI接口设计一个简单的计算器。 效果图: 一、布局GUI。 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

2.然后双击“Blank GUI(Default)”出现GUI窗口 3.添加按钮

4.根据按钮的作用及视觉效果做一定的修改 把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。 5.保存、添加功能函数 把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。 (1)数字按键编写。 在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String'); textString =strcat(textString,'0'); set(handles.text1,'String',textString) 这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”, 然后由set(handles.text1,'String','textString'在text1中输出。

全维状态观测器的设计

实 验 报 告 课程 线性系统理论基础 实验日期 2016年 6月 6 日 专业班级 姓名 学号 同组人 实验名称全维状态观测器的设计 评分 批阅教师签字 一、实验目的 1、 学习用状态观测器获取系统状态估计值的方法,了解全维状态观测器的 极点对状态的估计误差的影响; 2、 掌握全维状态观测器的设计方法; 3、 掌握带有状态观测器的状态反馈系统设计方法。 二、实验内容 开环系统? ??=+=cx y bu Ax x &,其中 []0100001,0,10061161A b c ????????===????????--???? a) 用状态反馈配置系统的闭环极点:5,322-±-j ; b) 设计全维状态观测器,观测器的极点为:10,325-±-j ; c) 研究观测器极点位置对估计状态逼近被估计值的影响; d) 求系统的传递函数(带观测器及不带观测器时); 绘制系统的输出阶跃响应曲线。 三、实验环境 MATLAB6、5 四、实验原理(或程序框图)及步骤

利用状态反馈可以使闭环系统的极点配置在所希望的位置上,其条件就是必须对全部状态变量都能进行测量,但在实际系统中,并不就是所有状态变量都能测量的,这就给状态反馈的实现造成了困难。因此要设法利用已知的信息(输出量y 与输入量x),通过一个模型重新构造系统状态以对状态变量进行估计。该模型就称为状态观测器。若状态观测器的阶次与系统的阶次就是相同的,这样的状态观测器就称为全维状态观测器或全阶观测器。 设系统完全可观,则可构造如图4-1所示的状态观测器 图4-1 全维状态观测器 为求出状态观测器的反馈ke 增益,与极点配置类似,也可有两种方法: 方法一:构造变换矩阵Q,使系统变成标准能观型,然后根据特征方程求出k e ; 方法二:就是可 采用Ackermann 公式: []T o e Q A k 1000)(1Λ-Φ=,其中O Q 为可观性矩阵。 利用对偶原理,可使设计问题大为简化。首先构造对偶系统 ???=+=ξ ηξξT T T b v c A & 然后可由变换法或Ackermann 公式求出极点配置的反馈k 增益,这也可

用MATLAB GUI设计简单计算器

HUBEI NORMAL UNIVERSITY 《MATLAB与仿真》课程设计论文 Course’s Thesis

摘要 基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。 计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB GUI的计算器的设计。 MATLAB GUI介绍 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效 数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。 MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。 MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE

7状态空间设计法极点配置观测器解析

第7章线性定常离散时间状态空间设计法 7.1引言 7.2状态反馈配置极点 7.3状态估值和状态观测器 7.4利用状态估值构成状态反馈以配置极点 7.5扰动调节 7.6无差调节

7.1 引言 一个被控对象: (1)()()()() ():1,():1,:,:,:x k Fx k Gu k y k Cx k x k n u k m F n n G n m C r n +=+?? =?????? 7.1 当设计控制器对其控制时,需要考虑如下各因素: ● 扰动,比如负载扰动 ● 测量噪声 ● 给定输入的指令信号 ● 输出 如图7.1所示。 给d L (k )扰动 图7.1 控制系统示意图 根据工程背景的不同,控制问题可分为调节问题和跟踪问题,跟踪问题也称为伺服问题。 调节问题的设计目标是使输出迅速而平稳地运行于某一平衡状态。包括指令变化时的动态过程,和负载扰动下的动态过程。但是这二者往往是矛盾的,需要折衷考虑。 伺服问题的设计目标是对指令信号的快速动态跟踪。 本章研究基于离散时间状态空间模型的设计方法。 7.2研究通过状态变量的反馈对闭环系统的全部特征值任意配置——稳定性与快速线。 7.3考虑当被控对象模型的状态无法直接测量时,如何使用状态观测器对状态进行重构。 7.4讨论使用重构状态进行状态反馈时闭环系统的特征值。 7.5简单地讨论扰动调节问题。 7.6状态空间设计时的无差调节问题。

7.2 状态反馈配置极点 工程被控对象如式7.1,考虑状态反馈 ()()()u k v k Lx k =+ 7.2 如图7.2所示。式7.2带入式7.1,得 (1)()()()() ()()()x k Fx k Gu k y k Cx k u k v k Lx k +=+?? =??=+? 7.3 整理得 ()(1)()() ()()x k F GL x k Gv k y k Cx k +=++?? =? 7.4 (k ) v (k ) 图7.2 状态反馈任意配置闭环系统的极点 闭环系统的特征方程为 []det ()0zI F GL -+= 7.5 问题是在什么情况下式7.5的特征根是可以任意配置的?即任给工程上期望的n 个特征根λ1, λ2, ..., λn ,有 []1det ()()0n i i zI F GL z λ=-+=-=∏ 7.6 定理:状态反馈配置极点

基于MATLAB的状态观测器设计

基于MATLAB 的状态观测器设计 预备知识: 极点配置 基于状态反馈的极点配置法就是通过状态反馈将系统的闭环极点配置到期望的极点位置上,从而使系统特性满足要求。 1. 极点配置原理 假设原系统的状态空间模型为: ???=+=Cx y Bu Ax x 若系统是完全可控的,则可引入状态反馈调节器,且: Kx u input -= 这时,闭环系统的状态空间模型为: ???=+-=Cx y Bu x )BK A (x 2. 极点配置的MATLAB 函数 在MATLAB 控制工具箱中,直接用于系统极点配置的函数有acker()和place()。调用格式为: K=acker(A,C,P) 用于单输入单输出系统 其中:A ,B 为系统矩阵,P 为期望极点向量,K 为反馈增益向量。 K=place(A,B,P) (K,prec,message)=place(A,B,P) place()用于单输入或多输入系统。Prec 为实际极点偏离期望极点位置的误差;message 是当系统某一非零极点偏离期望位置大于10%时给出的警告信息。 3. 极点配置步骤: (1)获得系统闭环的状态空间方程; (2)根据系统性能要求,确定系统期望极点分布P ; (3)利用MATLAB 极点配置设计函数求取系统反馈增益K ; (4)检验系统性能。 已知系统模型 如何从系统的输入输出数据得到系统状态?

初始状态:由能观性,从输入输出数据确定。 不足:初始状态不精确,模型不确定。 思路:构造一个系统,输出逼近系统状态 称为是的重构状态或状态估计值。实现系统状态重构的系统称为状态观 测器。 观测器设计 状态估计的开环处理: 但是存在模型不确定性和扰动!初始状态未知! 应用反馈校正思想来实现状态重构。 通过误差来校正系统:状态误差,输出误差。 基于观测器的控制器设计 系统模型 若系统状态不能直接测量, 可以用观测器来估计系统的状态。 L是观测器增益矩阵,对偏差的加权。 真实状态和估计状态的误差向量 误差的动态行为:

基于matlab的计算器制作

基于MATLAB的计算器制作从入门到高级 项目一、建立GUI框架 1,双击MATLAB图标(本实例使用的是MATLAB R2014),打开软件 2,打开GUI操作界面。有两种方式: a、在命令行窗口输入guide,然后点击回车。 b、先点击新建图标,在选择‘图形用户界面’。 得到如下窗口: 左上方有两个按钮:‘新建GUI’,‘打开现有GUI’。 对于‘新建GUI’:下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。下方是用来设置 保存文件位置的。

对于‘打开现有GUI’:初学者可能会在网上下载一些GUI源程序,使用‘打开现有GUI’,再浏览到文件所在位置便可。 3、构建GUI框架: 在选择新建GUI并且确定后,会弹出如下窗口: 在窗口的左边会有很多选项,可以一个个拖动编辑框内; 是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。看到这里细心地朋友就会发现,MATLAB GUI似乎可以开发出大型

软件哦,只要你有足够的想象力,当你从一个小白进阶到 一个高手之后,你可以做到的。 本次计算器制作只需要用到静态文本(或者是动态文本)用来做显示器,按钮(用来操作)。也可以添加一个面板 用来修饰。 在拖出的选项上双击,会得出该选项的属性栏,比如说 双击一个按钮选项,你会得到: 这个属性框比较复杂,没有必要一个个说清楚(有兴趣的 可以自己研究,其实理解起来也挺简单的) 本次计算器制作,我们只需要知道以下几个:

◆a、BackgroundColor取值为颜色的预定义字符或RGB 数值;缺省(就是默认的意思)值为浅灰色; ◆b、ForegroundColor取值为颜色的预定义字符或RGB 数值,该属性定义控件对象标题字符的颜色;缺省值为黑色; ◆c、String取值为字符串矩阵或块数组,定义控件对 象标题或选项内容; ◆d、FontName取值为控件标题等字体的字库名; ◆e、FontSize取值为数值,控制字体大小; ◆f、Tag取值为字符串,定义了控件的标识值,在任何 程序中都可以通过这个标识值控制该控件对象; ◆g、Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox; 项目二、简单加法器的制作 1、框架准备

基于MATLAB计算器设计与开发

六.主要参考文献 . (19) 一、课程设计应达到的目的 本课程是为自动化专业本科生开设的专业课程设计课。通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI 程序设计的能力。 二、 课程设计的基本要求: 要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A. 具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。(必做) B. 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。(必做) C. 能够保存上次历史计算的答案,先是答案存储器中得内容。(必做) D. 有清除键,能清除操作,并对不正确的表达式能指出其错误原因。(必做) E. 独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。(选做) 利用MATLAB GUI 功能,在绘制一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件大小、颜色,整体布局如图所示: 然后通过双击个按钮来改写其属性,在m 文件中编写其回调函数,最后在运行调试。 成绩

三、课题设计内容与步骤 3.1 各功能界面设计 GUI设计界面: 3.2 各功能模块实现 算法设计: A. 数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String'); if(strcmp(textString,'0.')==1)&(jj==0) set(handles. edit1,'String','1') ; else textString =strcat(textString,'1'); set(handles. edit1,'String',textString) end jj=0;

状态观测器的设计——报告

东南大学自动化学院 实 验 报 告 课程名称: 自动控制基础 实验名称: 状态观测器的设计 院 (系): 自动化学院 专 业: 自动化 姓 名: 吴静 学 号: 08008419 实 验 室: 机械动力楼417室 实验组别: 同组人员: 实验时间:2011年05月13日 评定成绩: 审阅教师: 一、实验目的 1. 理解观测器在自动控制设计中的作用 2. 理解观测器的极点设置 3. 会设计实用的状态观测器 二、实验原理 如果控制系统采用极点配置的方法来设计,就必须要得到系统的各个状态,然后才能用状态反馈进行极点配置。然而,大多数被控系统的实际状态是不能直接得到的,尽管系统是可以控制的。怎么办?如果能搭试一种装置将原系统的各个状态较准确地取出来,就可以实现系统极点任意配置。于是提出了利用被控系统的输入量和输出量重构原系统的状态,并用反馈来消除原系统和重构系统状态的误差,这样原系统的状态就能被等价取出,从而进行状态反馈,达到极点配置改善系统的目的,这个重构的系统就叫状态观测器。 另外,状态观测器可以用来监测被控系统的各个参量。 观测器的设计线路不是唯一的,本实验采用较实用的设计。 给一个被控二阶系统,其开环传递函数是G (s )=12 (1)(1)K T s T s ++ ,12 K K K =观测器如图示。

设被控系统状态方程 构造开环观测器,X ∧ Y ∧ 为状态向量和输出向量估值 由于初态不同,估值X ∧ 状态不能替代被控系统状态X ,为了使两者初态跟随,采用输出误差反馈调节,加入反馈量H(Y-Y)∧ ,即构造闭环观测器,闭环观测器对重构造的参数误差也有收敛作用。 也可写成 X =(A-HC)X +Bu+HY Y CX ? ∧ ∧ ∧∧ = 只要(A-HC )的特征根具有负实部,状态向量误差就按指数规律衰减,且极点可任意配置,一般地,(A-HC )的收敛速度要比被控系统的响应速度要快。工程上,取小于被控系统最小时间的3至5倍,若响应太快,H 就要很大,容易产生噪声干扰。 实验采用X =A X +Bu+H(Y-Y)? ∧ ∧∧ 结构,即输出误差反馈,而不是输出反馈形式。 取:1212min 35 20,5,2,0.5,0.2K K T T t λ-= =====,求解12g g ?????? 三、实验设备: THBDC-1实验平台 THBDC-1虚拟示波器 Matlab/Simulink 软件 四、实验步骤 按要求设计状态观测器 (一) 在Matlab 环境下实现对象的实时控制 1. 将ZhuangTai_model.mdl 复制到E:\MATLAB6p5\work 子目录下,运行matlab ,打开ZhuangTai_model.mdl 注:‘实际对象’模块对应外部的实际被控对象,在simulink 下它代表计算机与外部接口: ● DA1对应实验面板上的DA1,代表对象输出,输出通过数据卡传送给计算机; ● AD1对应实验面板上的AD1,代表控制信号,计算机通过数据卡将控制信号送给实际对象;

基于matlab的计算器编程附代码

1.需求分析 本次的实验要求是设计一个计算器,主要功能如下: (1)实现基本数学运算(加减乘除等),而且要能进行混合运算 (2)实现部分函数功能,如求平方根、求倒数等 (3)能实现小数运算 界面与标准计算器界面类似 根据要求以及以前的学习情况,决定使用matlab进行编程。Matlab强大的计算功能以及便捷的GUI设计,可以较为简便的实现所要求的功能。按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5 Sqrt(4) 1/2 Sin4 用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。 2.程序设计 M atlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。 3.调式分析 编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。 4.使用说明 程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI 工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的

方法,按键使用即可。 5.测试结果 计算结果为20 4sqrt=2 Sin4结果为 1/2=0.5 经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。 6.心得体会 本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,

全维、降维观测器

本文通过具体的例子阐明如何在 MATLAB 系统中进行全维状态观测器和降维状态观测器的设计。MATLAB 为状态空间设计提供了很多有用的函数,方便了矩阵方程的求解,其中的MATLAB 里面提供的库函数对全维状态观测器和降维状态观测器的设计也显得非常地方便。 现通过例子说明如何用 MATLAB 设计状态观测器。为了评价 MATLAB 所设计的状态观测器的性能,本文通过在 SIMULINK 环境下来仿真一个三阶状态观测器,来说明用 MATLAB 设计状态观测器的准确性。 1、全维观测器的设计 已知三阶系统的状态空间方程为: u x X ???? ? ?????+?????????? ---=102201210112 [] x y 012= 首先检验系统的是否完全能观 A=[2 -1 1;0 -1 2;1 0 -2]; C=[2 1 0]; N=[C;C*A;C*A*A] rank(N) ?? ?? ? ?????--=10112434012N rank(N) ans = 3 ,说明系统是完全能观的。 下面选择观测器需要配置的期望极点为:s 1 =-12 s 2,3 =-3±0.88i 由此求出观测器增益矩阵G : A=[2 -1 1;0 -1 2;1 0 -2]; C=[2 1 0]; P =[-12;-3+0.88*i;-3-0.88*i]; G = acker(A',C',P); 求得G = [11.6527 -6.3054 1.0619]

可得全维观测器的方程为: y u x Gy Bu x GC A x ???? ??????-+??????????+??????????-----=++-=0619.13054.66527.11102~0000.20619.11238.10000.23054.56108.120000.16527.123054.21~)(~ 下面可依据上式构建simulink 图,据此观察观测器的跟踪能力 : 跟踪效果图如下: X1

用MATLAB制作简单计算器

用M A T L A B制作简单计 算器 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

安阳工学院电子信息与电气工程学院《MATLAB编程与应用》课程大作业 题目:用MATLAB制作简单计算器 班级:电子信息工程(专升本) 教师成绩由以下评分标准累计得出 1、设计和仿真结果正确,分析清晰合理。 40% 2、大作业报告重点突出、阐述清晰。 30% 3、陈述清晰正确、有说服力,能够正确回答问题。 30% 总分 (上述成绩由教师填写) 学生自评分值(该表格全部由学生填写) 大作业总成绩(该表格“姓名”和“学号”由学生填写,“成绩”由教师填写)

1.计任务: 1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 2.设计方案 利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A.实现十进制数的加、减、乘、除、简单计算。 B. 科学计算函数,包括正弦、余弦、正切、(余切、开方、指数等函数运行。 C. 能够保存上次历史计算的答案,先是答案存储器中得内容。 D. 有清除键,能清除操作。 3.方案实施 通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。然后在通过各个按钮的回调函数,实现简单的计算功能。 4.方案施舍 首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示: 图-1 一、布局GUI 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

MATLAB编写矩阵计算器

一、GUI开发环境简介 MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序, 它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。 图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、 文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。 二、矩阵计算器介绍 2.1 程序使用的控件 在矩阵计算器设计中主要用到三种控件,文本编辑框(edit text),静态文本框(Static text),命令按钮(push button),边框(panel)。然后在通过各个按钮的回调函数,实现简单的计算功能。 2.2 程序功能介绍 (1)具有用户图形界面。实现矩阵的加、减、乘、左除、右除等简单计算。 (2)有清空键,能清除操作。 2.3 矩阵计算器界面及主要控件功能 注释: text1文本编辑框控件功能:输出要计算公式。如[12 45;78 56]+[659 238;79 56] MatA文本编辑框功能:输入参与计算矩阵A MatB文本编辑框功能:输入参与计算矩阵B MatC静态文本框功能:输出计算结果矩阵C

三、部分计算操作结果 (1) 加法+ MatA text1 pushbutton22 pushbutton23 pushbutton24 pushbutton20

(2)求逆 (3)转置 (4)群运算.*

四、部分模块功能算法的实现 (1)按键’加法+’响应: a=get(handles.matA,'string'); textString=strcat(a,'+'); b=get(handles.matB,'string'); textString=strcat(textString,b); set(handles.text1,'String',textString); (2)按键’转置’响应 a=get(handles.matA,'string'); textString=strcat(a,''''); set(handles.text1,'String',textString); (3)按键’计算’响应 textString=get(handles.text1,'String'); f=eval(textString); set(handles.matC,'string',num2str(f,'%15.5g')) (5)按键’清空’响应 set(handles.text1,'String','') set(handles.matA,'String','[]') set(handles.matB,'String','[]') set(handles.matC,'String','') 注释:其余模块功能算法与以上代码较为相似,不在一一举例。

状态观测器的设计

实验四 状态观测器的设计 一、实验目的 1. 了解和掌握状态观测器的基本特点。 2. 设计状态完全可观测器。 二、实验要求 设计一个状态观测器。 三、实验设备 1. 计算机1台 2. MATLAB6.X 软件1套 四、实验原理说明 设系统的模型如式(3-1)示。 p m n R y R u R x D Cx y Bu Ax x ∈∈∈???+=+= (3-1) 系统状态观测器包括全维观测器和降维观测器。设计全维状态观测器的条件是系统状态完全能观。全维状态观测器的方程为: Bu y K z C K A z z z ++-=)( (3-2) 五、实验步骤 已知系数阵A 、B 、和C 阵分别如式(3-4)示,设计全维状态观测器,要求状态观测器的极点为[-1 -2 -3]上 ??????????---=234100010A ???? ??????-=631B []001=C (3-4) 设计全维状态观测器,要求状态观测器的极点为[-1 -2 -3]。 对系统式(3.4)所示系统,用MATLAB 编程求状态观测器的增益阵K z =[k1 k2 k3]T

程序: %实验4 A=[0 1 0;0 0 1;-4 -3 -2]; B=[1;3;-6]; C=[1 0 0]; D=[0]; [num,den]=ss2tf(A,B,C,D,1); %求出原系统特征多相式denf=[-1 -2 -3]; %希望的极点的特征多相式 k1=den(:,1)-denf(:,1) k2=den(:,2)-denf(:,2) %计算k2=d2-a2 k3=den(:,3)-denf(:,3) %计算k3=d3-a3 Kz=[k1 k2 k3]' 运行结果: k1 = 2 k2 = 4.0000 k3 = 6.0000 Kz = 2.0000 4.0000 6.0000

流体力学简单计算MATLAB程式

用matlab进行编程计算 第一问: z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6); hf=z+(p1-p2)/(0.86*gama) xdc=2*jdc/d; beta=4.15;m=1; Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m)); v=4*Q/(pi*d^2); Re=v*d/mu; Re1=59.7/xdc^(8*xdc/7); Re2=(665-765*log(xdc))/xdc; i=hf/L; if Re<3000 Q=Q; elseif 3000

基于MATLAB科学计算器

目录 计算器得效果图 ........................................................................... 错误!未定义书签。 一、GUI设计界面: (3) 1。打开GUI (3) 2。添加按钮 (3) 3。根据按钮得作用及视觉效果做一定得修改: (4) 4。保存、添加功能函数 (4) (1)数字键编写 (4) (2)符号键得编写 (4) (3)运算符“=”得编写 (5) (4)按键“←back"得编写 (5) (5)按键“清空”得编写 (5) (6)按键“退出”得编写 (5) (7)按键“二进制数转十进制数"得编写 (5) (8)按键“十进制数转二进制数”得编写 (5) 二、计算器得使用 (5) 除法运算(÷) (5) 平方运算(^2) (6) 函数cos (∏/3)得计算 (6) 函数arctan (∏/3)得计算 (7) 以2为底得对数得计算(log 2) (7) 十进制数转二进制数得计算(调用dec2bin函数) (8) 二进制数转十进制数得计算(调用bin2dec函数) (8) 三、附各按键得程序源代码 (9) 四、问题与解决方法 (14) 五、心得体会 (14) 参考文献 (15) 计算器得效果图:

一、GUI设计界面: 1。打开GUI 输入Guide 回车或者在工具栏上点击图标打开Guide 窗口: 2。添加按钮

3、根据按钮得作用及视觉效果做一定得修改: 双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体与颜色,然后对按钮得位置进行排布,尽量使按钮集中在静态文本框下面、 4、保存、添加功能函数 把做好得按钮及静态文本框保存后自动弹出Editor得M文本,对然后对相应得pushbutton添加功能函数。以下就是相应按钮得功能函数。 (1)数字键编写 在function pushbutton1_Callback(hObject, eventdata, handles)下输入: textString = get(handles。text1,’String'); textString =strcat(textString,'0'); set(handles、text1,’String',textString) 这就是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1得内容,并存储数个“0”, 然后由set(handles。text1,'String','textString’在text1中输出。 同理,分别在function pushbutton2~10_Callback(hObject, eventdata, handles)下给1~9数字按键下编写此类程序、 (2)符号键得编写 function pushbutton12_Callback(hObject, eventdata, handles) textString = get(handles、text1,'String’); textString =strcat(textString,’÷’); set(handles。text1,'String',textString) strcat得作用就是将两个字符串连接起来,就就是在已输入得存储数据textString后添加“÷"进行运算。 然后执行set(handles、text1,’String’,textString)。符号键‘—’、‘*’、‘/’与‘÷'得运算函数类似。“平方运算”,主要就是由“^2”功能实现。

全维、降维观测器

全维、降维观测器

本文通过具体的例子阐明如何在 MATLAB 系统中进行全维状态观测器和降维状态观测器的设计。MATLAB 为状态空间设计提供了很多有用的函数,方便了矩阵方程的求解,其中的MATLAB 里面提供的库函数对全维状态观测器和降维状态观测器的设计也显得非常地方便。 现通过例子说明如何用 MATLAB 设计状态观测器。为了评价 MATLAB 所设计的状态观测器的性能,本文通过在 SIMULINK 环境下来仿真一个三阶状态观测器,来说明用 MATLAB 设计状态观测器的准确性。 1、全维观测器的设计 已知三阶系统的状态空间方程为: u x X ?? ?? ? ?????+??????????---=102201210112& []x y 01 2= 首先检验系统的是否完全能观 A=[2 -1 1;0 -1 2;1 0 -2]; C=[2 1 0]; N=[C;C*A;C*A*A] rank(N) ??? ? ? ?????--=10112434012N rank(N) ans = 3 ,说明系统是完全能观的。 下面选择观测器需要配置的期望极点为:s 1 =-12 s 2,3 =-3±0.88i 由此求出观测器增益矩阵G : A=[2 -1 1;0 -1 2;1 0 -2]; C=[2 1 0]; P =[-12;-3+0.88*i;-3-0.88*i]; G = acker(A',C',P); 求得G = [11.6527 -6.3054 1.0619]

可得全维观测器的方程为: y u x Gy Bu x GC A x ???? ??????-+??????????+??????????-----=++-=0619.13054.66527.11102~0000.20619.11238.10000.23054.56108.120000.16527.123054.21~)(~& 下面可依据上式构建simulink 图,据此观察观测器的跟踪能力 : 跟踪效果图如下: X1

相关文档
相关文档 最新文档