精华内容
下载资源
问答
  • 详细介绍了MATLAB中各种符号的含义和用法
  • Matlab 一些符号的含义 2009-05-05 14:34:12| 分类 Matlab |字号大中小 订阅 1. MATLAB所定义的特殊变量及其意义变量名 意义 help 在线帮助命令, 如用help plot调用命令函数plot的帮助说明 who 列出所有定义过的...
  • Matlab 的符号含义

    2019-07-25 15:40:24
    matlab符号含义 符号意义 MATLAB所定义特殊变量及其意义变量名 意义 help 在线帮助命令, 如用help plot调用命令函数plot帮助说明。 who 列出所有定义过变量名称 ...MATLAB中的运算符和特殊字符说明...

    matlab符号含义

    符号意义

    MATLAB所定义的特殊变量及其意义变量名 意义

    1. help 在线帮助命令, 如用help plot调用命令函数plot的帮助说明。
    2. who 列出所有定义过的变量名称
    3. ans 最近的计算结果的变量名
    4. eps MATLAB定义的正的极小值=2.2204e-16
    5. pi π值3.14159265…
    6. inf ∞值,无限大
    7. NaN 非数

    MATLAB中的运算符和特殊字符说明符号

    1, ‘+’ 加
    2,‘-’ 减
    3,.* 点乘 详细说明help arith
    4,* 矩阵相乘
    5,^ 矩阵求幂
    6,.^ 点幂
    7,\ 左除 详细说明help slash
    8,/ 右除
    9,.\ 点左除
    10,./ 点右除
    11,kron 张量积 详细说明help kron
    12,, 作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来
    13,; 有两种表达方式
    (a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果
    (b)在创建矩阵的语句中指示一行元素的结束,例如m=[x y z;i j k]
    14,: 有两种表达方式
    (a)创建向量的表达式分隔符,如x=a?️c
    (b)a(:,j)表示j列的所有行元素;a(i,:)表示i行的所有列元素;a(1:3,4)表示第四列的第1行至第3行元素
    15,() 圆括号
    16,〔〕 创建数组、向量、矩阵或字符串(字母型)
    17,{} 创建单元矩阵(cell array)或结构(struct)
    18,% 注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。
    ’ (a)定义字符串用
    (b)向量或矩阵的共轭转置符
    19,.’ 一般转置符
    20,… 表示MATLAB表达式继续到下一行,增强代码可读性
    21,= 赋值符号
    22,== 等于关系运算符
    23,<,> 小于,大于关系运算符 详细说明help relop
    24,& 逻辑与 | 逻辑或 ~ 逻辑非 xor 逻辑异或

    展开全文
  • 文档中都是Matlab函数说明,是萌新Matlab新手上路时自己一条一条从网上搜,其中第一条是“matlab中波浪号~作用和用法”,哭晕,刚上手matlab,连个~符号都要欺负萌新读书少。纯个人建议,萌新上手matlab,最好...
  • [单选] MATLAB中函数()实现符号函数三维曲线的绘图。更多相关问题产品生命周期理论的含义是什么?为创造技术发明的领先优势,我们应采取怎样的产业政策?浇筑梁式混凝土构件如采用附着式振捣器振捣,其分层浇筑厚度...

    [单选] MATLAB中函数()实现符号函数三维曲线的绘图。

    更多相关问题

    产品生命周期理论的含义是什么?为创造技术发明的领先优势,我们应采取怎样的产业政策?

    浇筑梁式混凝土构件如采用附着式振捣器振捣,其分层浇筑厚度应不大于()。A.30cmB.50cmC.15cmD.1m

    简述非关税壁垒的特点。

    桥梁墩台混凝土灌注多用什么振捣器振捣()。A.振动捧B.振动台C.附着式振捣器D.平板式振捣器

    安全液封的阻火原理是液体封在(),一旦液封的一侧着火,火焰都将在液封处被熄灭,从而阻止火焰

    具有最大的危险危害性,必须严格的一步步的对工艺过程、设备进行危害分析,以便于确认在什么地

    配合比设计中如单从和易性角度考虑不应选择下面哪种标号水泥()。A.325号B.275号C.625号D.425号

    外加剂的掺入方法()。A、先掺法B、后掺法C、同掺法D、必须加水掺入

    制作承重木结构的方材板材和原木,根据木材中所存在的缺陷的数量和大小,均分为()级。

    简述产业内贸易理论的内容。

    经局部排气装置排出的有害物质必须通过净化设备处理后,才能排入大气,保证进入大气的有害物质

    简要概述要素禀赋论的基本内容。

    钢梁石膏腻子由哪几种原料组成?配制及使用时有哪些注意事项?

    配额的效应与关税的效应有什么异同?

    使用混凝土泵运输混凝土哪种操作是正确的()。A.停机时间不得超过30minB.工作过程中不得停机C.

    简述WTO与GATT的关系。

    安全液封的阻火原理是液体封在(),一旦液封的一侧着火,火焰都将在液封处被熄灭,从而阻止火焰

    简述WTO与GATT的关系。

    《环境管理体系--规范使用指南》(标准号ISO14001),是()发布的。

    浇筑梁式混凝土构件如采用附着式振捣器振捣,其分层浇筑厚度应不大于()。A.30cmB.50cmC.15cmD.1m

    爆破片的安全可靠性取决于爆破片的材料、厚度和泄压面积。()

    灌注水下混凝土时测量锤的主要作用是()。A.测管长B.测混凝土的和易性C.测水下混凝土面标高D.振

    除尘器按工作原理分为干式、湿式两大类;按工作方式分为沉降式、离心式、过滤式、冲激式等几类。()

    简述普惠制的基本原则及实施方案。

    爆破片和爆破帽完成降压工作后,元件可以继续使用,装置也可以继续运作。()

    绝对优势论和比较优势论在阐述国际贸易分工的前提和结论方面有何不同?

    处理混凝土施工缝如有抗渗要求时接缝应做成凹形或凸形面或装设()。

    属于混凝土内部缺陷的是()。A.裂缝B.蜂窝C.强度不足D.麻面

    按易燃液体闪点的高低分为低中高闪点液体,其中中闪点液体的闪点温度为()

    企业应根据重大危险源目标模拟事故状态,制定出各种事故状态的应急处置方案。()

    保障措施与反倾销、反补贴措施相比较,在性质上有什么不同?

    企业应根据重大危险源目标模拟事故状态,制定出各种事故状态的应急处置方案。()

    保障措施与反倾销、反补贴措施相比较,在性质上有什么不同?

    对重大事故隐患不采取措施,指使发生重大事故,造成生命财产损失的,对责任人比照刑法第187条的

    根据《工业企业设计卫生标准》,每个工作日接触噪声时间为8小时,其允许噪声标准是()。

    ()不属于卸落设备。A.垫块B.木楔C.砂筒D.千斤顶

    按易燃液体闪点的高低分为低中高闪点液体,其中中闪点液体的闪点温度为()

    通过道路运输危险化学品的,应当配备押运人员,并保证所运输的危险化学品处于押运人员的监控之

    企业应根据重大危险源目标模拟事故状态,制定出各种事故状态的应急处置方案。()

    做好事故调查处理工作,坚持四不放过的原则,即事故原因没有查清不放过,事故责任者没有受到处

    化工操作人工加料危险性很大,要注意投料温度和投料顺序并防止静电,加入()物料时,不允许直接

    按照贸易壁垒取消的程度划分,区域经济一体化有哪些形式?

    目前为止,用()浇筑的混凝土,外表最光滑、美观。A.刨光木模板B.钢模板C.土胎模D.玻璃钢模板

    做好事故调查处理工作,坚持四不放过的原则,即事故原因没有查清不放过,事故责任者没有受到处

    温度高的水适合哪种混凝土施工()。A.冬季混凝土施工B.夏季混凝土施工C.常温下混凝土施工D.预应

    ()是一种常见的净化方法,工业上已得到广泛应用。

    处理混凝土施工缝如有抗渗要求时接缝应做成凹形或凸形面或装设()。

    企业应根据重大危险源目标模拟事故状态,制定出各种事故状态的应急处置方案。()

    浇筑梁式混凝土构件如采用附着式振捣器振捣,其分层浇筑厚度应不大于()。A.30cmB.50cmC.15cmD.1m

    护木倒楞角的标准尺寸为()。A.10mm×10mmB.10mm×15mmC.15mm×15mmD.15mm×20mm

    木模板的厚度一般为()cm。

    外加剂的掺入方法()。A、先掺法B、后掺法C、同掺法D、必须加水掺入

    ()是一种常见的净化方法,工业上已得到广泛应用。

    正在进行进油或发油作业的储油罐叫()

    天沟距堑顶边缘的距离一般情况下不宜小于()。A.2mB.3mC.4mD.5m

    密度轻于空气的可燃气体可直接向高空排放。()

    正在进行进油或发油作业的储油罐叫()

    ()是一种常见的净化方法,工业上已得到广泛应用。

    护木采用()搭接。

    路堤填筑时应沿横断面全宽、纵向分层填筑压实。()

    展开全文
  • 本文利用 Matlab的符号计算功能,编写了用于傅里叶级数分析函数.通过实例介绍了该函数在傅里叶级数分析中的 应用。将符号计算引入电路分析可将学生从繁重手工计算解脱出来,将更多时间用于对基本概念和...
  • 本文利用Matlab 的符号计算功能,编写了用于傅里叶级数分析函数,通过实例介绍了该函数在傅里叶级数分析中的 应用。将符号计算引入电路分析可将学生从繁重手工计算解脱出来,将更多时间用于对基本概念和基本...
  • 控制中的各种函数MATLAB仿真

    万次阅读 多人点赞 2015-05-14 11:34:33
    控制系统的MATLAB仿真 1 MATLAB简介 MATLAB是Mathworks公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的功能强大、操作简单的优秀工程计算应用软件。...MATLAB的含义是矩阵实验室(Matrix L

     控制系统的MATLAB仿真

    1 MATLAB简介

    MATLAB是Mathworks公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的功能强大、操作简单的优秀工程计算应用软件。MATLAB不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理及仿真模拟等功能。从而能够很好的帮助工程师及科学家解决实际的技术问题。

    MATLAB的含义是矩阵实验室(Matrix Laboratory),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。经过十几年的扩充和完善,现已发展成为包含大量实用工具箱(Toolbox)的综合应用软件,不仅成为线性代数课程的标准工具,而且适合具有不同专业研究方向及工程应用需求的用户使用。

    MATLAB最重要的特点是易于扩展。它允许用户自行建立完成指定功能的扩展MATLAB函数(称为M文件),从而构成适合于其它领域的工具箱,大大扩展了MATLAB的应用范围。目前,MATLAB已成为国际控制界最流行的软件,控制界很多学者将自己擅长的CAD方法用MATLAB加以实现,出现了大量的MATLAB配套工具箱,如控制系统工具箱(control systems toolbox),系统识别工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK等。

    MATLAB的安装

    本节将讨论操作系统为Microsoft Windows环境下安装MATLAB6的过程。

    将MATLAB6的安装盘放入光驱,系统将自动运行auto-run.bat文件,进行安装;也可以执行安装盘内的setup.exe文件启动MATLAB的安装程序。启动安装程序后,屏幕将显示安装MATLAB的初始界面,根据Windows安装程序的常识,不断单击[Next],输入正确的安装信息,具体操作过程如下:

    输入正确的用户注册信息码;

    选择接收软件公司的协议;

    输入用户名和公司名;

    选择MATLAB组件(Toolbox);

    选择软件安装路径和目录;

    单击[Next]按钮进入正式的安装界面。安装过程界面如图1所示。

    安装完毕后,选择[Restart my computer now]选项以重新启动计算机。

    重新启动计算机后,用户就可以点击图标

    使用MATLAB6了。MATLAB启动过程界面如图2所示。

    MATLAB桌面系统

    MATLAB的桌面系统由桌面平台以及桌面组件共同构成,如图3。桌面平台是各桌面组件的展示平台,它提供了一系列的菜单操作以及工具栏操作,而不同功能的桌面组件构成了整个MATLAB操作平台。其组件主要包含如下8个组件部分:

    ①命令窗口(Command Window)②历史命令窗口(Command History)③组件平台(Launch Pad)④路径浏览器(Current Directory Browser)⑤帮助浏览器(Help Browser)⑥工作空间浏览器(Workspace Browser)⑦数组编辑器(Array Editor)⑧M文件编辑调试器(Editor-Debugger)。

      用户可以在View菜单下选择打开或关闭某个窗口。

     

    (3) MATLAB命令窗口

    MATLAB可以认为是一种解释性语言。在MATLAB命令窗口中,标志>>为命令提示符,在命令提示符后面键入一个MATLAB命令时,MATLAB会立即对其进行处理,并显示处理结果。

    这种方式简单易用,但在编程过程中要修改整个程序比较困难,并且用户编写的程序不容易保存。如果想把所有的程序输入完再运行调试,可以用鼠标点击快捷

    或File|New|M-file菜单,在弹出的编程窗口中逐行输入命令,输入完毕后点击Debug|Run(或F5)运行整个程序。运行过程中的错误信息和运行结果显示在命令窗口中。整个程序的源代码可以保存为扩展名为".m"的M文件。

    在介绍MATLAB的强大计算和图象处理功能前,我们可以先运行一个简单的程序。

    设系统的闭环传递函数为:

    求系统的时域响应图,可输入下面的命令:

    >> num=[1,4];

    den=[1,2,8];

    step(num,den)

    程序运行后会在一个新的窗口中显示出系统的时域动态响应曲线,如图4。用鼠标左键点击动态响应曲线的某一点,系统会提示其响应时间和幅值。按住左键在曲线上移动鼠标的位置可以很容易的根据幅值观察出上升时间、调节时间、峰值及峰值时间,进而求出超调量。如果想求根轨迹,可将程序的第三行变为rlocus(num,den),求伯德图可改为bode(num,den)。所不同的是,在根轨迹和伯德图中,G(s)为开环传递函数。

    MATLAB的语法规则类似于C语言,变量名、函数名都与大小写有关,即变量A和a是两个完全不同的变量。应该注意所有的函数名均由小写字母构成。

    MATLAB是一个功能强大的工程应用软件,它提供了相当丰富的帮助信息,同时也提供了多种获得帮助的方法。如果用户第一次使用MATLAB,则建议首先在>>提示符下键入DEMO命令,它将启动MATLAB的演示程序。用户可以在此演示程序中领略MATLAB所提供的强大的运算和绘图功能。

    2 MATLAB基本操作命令

    本节简单介绍与本书内容相关的一些基本知识和操作命令。

    (1)简单矩阵的输入

    MATLAB是一种专门为矩阵运算设计的语言,所以在MATLAB中处理的所有变量都是矩阵。这就是说,MATLAB只有一种数据形式,那就是矩阵,或者数的矩形阵列。标量可看作为1×1的矩阵,向量可看作为n×1或1×n的矩阵。这就是说,MATLAB语言对矩阵的维数及类型没有限制,即用户无需定义变量的类型和维数,MATLAB会自动获取所需的存储空间。

    输入矩阵最便捷的方式为直接输入矩阵的元素,其定义如下:

    1、元素之间用空格或逗号间隔;

    2、用中括号([])把所有元素括起来;

    3、用分号(;)指定行结束。

    例如,在MATLAB的工作空间中,输入:

    则输出结果为:

    矩阵a被一直保存在工作空间中,以供后面使用,直至修改它。

    MATLAB的矩阵输入方式很灵活,大矩阵可以分成n行输入,用回车符代替分号或用续行符号(…)将元素续写到下一行。例如:

    以上三种输入方式结果是相同的。一般若长语句超出一行,则换行前使用续行符号(…)。

     

    在MATLAB中,矩阵元素不限于常量,可以采用任意形式的表达式。同时,除了直接输入方式之外,还可以采用其它方式输入矩阵,如:

    (1)利用内部语句或函数产生矩阵;

    (2)利用M文件产生矩阵;

    (3)利用外部数据文件装入到指定矩阵。

    (2)复数矩阵输入

    MATLAB允许在计算或函数中使用复数。输入复数矩阵有两种方法:

    (1) a=[12;34]+i*[56;78]

    (2) a=[1+5i 2+6i;3+7i 4+8i]

    注意,当矩阵的元素为复数时,在复数实部与虚部之间不允许使用空格符。如1 +5i将被认为是1和5i两个数。另外,MATLAB表示复数时,复数单位也可以用j。

    (3) MATLAB语句和变量

    MATLAB是一种描述性语言。它对输入的表达式边解释边执行,就象BASIC语言中直接执行语句一样。

    MATLAB语句的常用格式为:

    变量=表达式[;]

    或简化为:

     表达式[;]

    表达式可以由操作符、特殊符号、函数、变量名等组成。表达式的结果为一矩阵,它赋给左边的变量,同时显示在屏幕上。如果省略变量名和"="号,则MATLAB自动产生一个名为ans的变量来表示结果,如:

    1900∕81

    结果为:

    ans是MATLAB提供的固定变量,具有特定的功能,是不能由用户清除的。常用的固定变量还有eps、pi、Inf、NaN等。其特殊含义可以用7.2.10节介绍的方法查阅帮助。

    MATAB允许在函数调用时同时返回多个变量,而一个函数又可以由多种格式进行调用,语句的典型格式可表示为:

    [返回变量列表]=fun-name(输入变量列表)

    例如用bode()函数来求取或绘制系统的Bode图,可由下面的格式调用:

    其中变量num、den表示系统传递函数分子和分母,W表示指定频段,mag为计算幅值,phase为计算相角。

    (4)语句以"%"开始和以分号";"结束的特殊效用

    在MATLAB中以"%"开始的程序行,表示注解和说明。符号"%"类似于C++中的"//"。这些注解和说明是不执行的。这就是说,在MATLAB程序行中,出现"%"以后的一切内容都是可以忽略的。

    分号用来取消打印,如果语句最后一个符号是分号,则打印被取消,但是命令仍在执行,而结果不再在命令窗口或其它窗口中显示。这一点在M文件中大量采用,以抑制不必要的信息显示。

    (5)获取工作空间信息

    MATLAB开辟有一个工作空间,用于存储已经产生的变量。变量一旦被定义,MATLAB系统会自动将其保存在工作空间里。在退出程序之前,这些变量将被保留在存储器中。

    为了得到工作空间中的变量清单,可以在命令提示符>>后输入who 或 whos 命令,当前存放在工作空间的所有变量便会显示在屏幕上。

    命令clear能从工作空间中清除所有非永久性变量。如果只需要从工作空间中清除某个特定变量,比如"x",则应输入命令clear x。

    (6)常数与算术运算符

    MATLAB采用人们习惯使用的十进制数。如:

    数值的相对精度为eps,它是一个符合IEEE标准的16位长的十进制数,其范围为:

    MATLAB提供了常用的算术运算符:

    应该注意:(∕)右除法和(﹨)左除法这两种符号对数值操作时,其结果相同,其斜线下为分母,如1∕4与4﹨1,其结果均为0.25,但对矩阵操作时,左、右除法是有区别的。

    (7)选择输出格式

    输出格式是指数据显示的格式,MATLAB提供format命令可以控制结果矩阵的显示,而不影响结果矩阵的计算和存储。所有计算都是以双精度方式完成的。

    (1)如果矩阵的所有元素都是整数,则矩阵以不带小数点的格式显示。

    如输入:

    x=[-1    0    1]

    则显示:

    x=

      -1    0    1

    如果矩阵中至少有一个元素不是整数,则有多种输出格式。常见格式有以下四种:

    ① format short(短格式,也是系统默认格式)

    ② format short e(短格式科学表示)

    ③ format long(长格式)

    ④ format long e(长格式科学表示)

    如:

    对于以上四种格式,其显示结果分别为:

    一旦调用了某种格式,则这种被选用的格式将保持,直到对格式进行了改变为止。

    (8)MATLAB图形窗口

    当调用了一个产生图形的函数时,MATLAB会自动建立一个图形窗口。这个窗口还可分裂成多个窗口,并可在它们之间选择,这样在一个屏上可显示多个图形。

    图形窗口中的图形可通过打印机打印出来。若想将图形导出并保存,可用鼠标点击菜单File|Export,导出格式可选emp、bmp、jpg等。命令窗口的内容也可由打印机打印出来:如果事先选择了一些内容,则可打印出所选择的内容;如果没有选择内容,则可打印出整个工作空间的内容。

    (9)剪切板的使用

    利用Windows的剪切板可在MATLAB与其它应用程序之间交换信息。

    (1)要将MATLAB的图形移到其它应用程序,首先按Alt-Print Screen键,将图形复制到剪切板中,然后激活其它应用程序,选择edit(编辑)中的paste(粘贴),就可以在应用程序中得到MATLAB中的图形。当然还可以借助于copy to Bitmap 或copy to Metafile 选项来传递图形信息。

    (2)要将其它应用程序中的数据传递到MATLAB,应先将数据放入剪切板,然后在MATLAB中定义一个变量来接收。

    如键入:  q=[

    然后选择Edit中的paste,最后加上"]",这样可将应用程序中的数据送入MATLAB的q变量中。

    (10)MATLAB编程指南

    MATLAB的编程效率比BASIC、C、FORTRAN和PASCAL等语言要高,且易于维护。在编写小规模的程序时,可直接在命令提示符>>后面逐行输入,逐行执行。对于较复杂且经常重复使用的程序,可按7.1.3介绍的方法进入程序编辑器编写M文件。

    M文件是用MATLAB语言编写的可在MATLAB环境中运行的磁盘文件。它为脚本文件(Script File)和函数文件(Function File),这两种文件的扩展名都是.m。

    (1)脚本文件是将一组相关命令编辑在一个文件中,也称命令文件。脚本文件的语句可以访问MATLAB工作空间中的所有数据,运行过程中产生的所有变量都是全局变量。例如下述语句如果以.m为扩展名存盘,就构成了M脚本文件,我们不妨将其文件名取为"Step_Response"。

    % 用于求取一阶跃响应。

    num=[1 4];

    den=[1 2 8];

    step(num,den)

    当你键入help Step_Response时,屏幕上将显示文件开头部分的注释:

    用于求取一阶跃响应。

    很显然,在每一个M文件的开头,建立详细的注释是非常有用的。由于MATLAB提供了大量的命令和函数,想记住所有函数及调用方法一般不太可能,通过联机帮助命令help可容易地对想查询的各个函数的有关信息进行查询。该命令使用格式为:

    help 命令或函数名

    注意:若用户把文件存放在自己的工作目录上,在运行之前应该使该目录处在MATLAB的搜索路径上。当调用时,只需输入文件名,MATLAB就会自动按顺序执行文件中的命令。

    (2)函数文件是用于定义专用函数的,文件的第一行是以function作为关键字引导的,后面为注释和函数体语句。

    函数就像一个黑箱,把一些数据送进去,经加工处理,再把结果送出来。在函数体内使用的除返回变量和输入变量这些在第一行functon语句中直接引用的变量外,其它所有变量都是局部变量,执行完后,这些内部变量就被清除了。

    函数文件的文件名与函数名相同(文件名后缀为.m),它的执行与命令文件不同,不能键入其文件名来运行函数,M函数必须由其它语句来调用,这类似于C语言的可被其它函数调用的子程序。M函数文件一旦建立,就可以同MATLAB基本函数库一样加以使用。

    例1 求一系列数的平均数,该函数的文件名为"mean.m"

    function y=mean(x)

    % 这是一个用于求平均数的函数

    w=length(x); % length函数表示取向量x的长度

    y=sum(x)/w; % sun函数表示求各元素的和

    该文件第一行为定义行,指明是mean函数文件,y 是输出变量,x是输入变量,其后的%开头的文字段是说明部分。真正执行的函数体部分仅为最后二行。其中变量w是局部变量,程序执行完后,便不存在了。

    在MATLAB命令窗口中键入

    >> r=1:10; % 表示r变量取1到10共10个数

    mean(r)

    运行结果显示

    ans =

    5.5000

    该例就是直接使用了所建立的M函数文件,求取数列r的平均数。

     

    3 MATLAB在控制系统中的应用

     

    MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都有MATLAB工具箱。本节结合前面所学自控理论的基本内容,采用控制系统工具箱(Control Systems Toolbox)和仿真环境(Simulink),学习MATLAB的应用。

    (1) 用MATLAB建立传递函数模型

    1.有理函数模型

    线性系统的传递函数模型可一般地表示为:

    (1)

    将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量numden,就可以轻易地将传递函数模型输入到MATLAB环境中。命令格式为:

    (2)

    (3)

    在MATLAB控制系统工具箱中,定义了tf() 函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。从而使得系统模型的输入和处理更加方便。

    该函数的调用格式为:

    G=tf(num,den);   (4)

     

    例2 一个简单的传递函数模型:

    可以由下面的命令输入到MATLAB工作空间中去。

     

    >> num=[1,5];

     

    den=[1,2,3,4,5];

     

    G=tf(num,den)

     

    运行结果:

    这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。

     

    例3 一个稍微复杂一些的传递函数模型:

    该传递函数模型可以通过下面的语句输入到MATLAB工作空间。

     

    >> num=6*[1,5];

    den=conv(conv([1,3,1],[1,3,1]),[1,6]);

    tf(num,den)

    运行结果:

    其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法当然也可以用这个函数来计算。该函数允许任意地多层嵌套,从而表示复杂的计算。

     

    2.零极点模型

    线性系统的传递函数还可以写成极点的形式:


    将系统增益、零点和极点以向量的形式输入给三个变量KGain、Z和P,就可以将系统的零极点模型输入到MATLAB工作空间中,命令格式为:

    在MATLAB控制工具箱中,定义了zpk()函数,由它可通过以上三个MATLAB变量构造出零极点对象,用于简单地表述零极点模型。该函数的调用格式为:

     

    G=zpk(Z,P,KGain)  

     

    例4 某系统的零极点模型为:

    该模型可以由下面的语句输入到MATLAB工作空间中。

    >> KGain=6;

    z=[-1.9294;-0.0353+0.9287j;-0.0353-0.9287j];

    p=[-0.9567+1.2272j;-0.9567-1.2272j;0.0433+0.6412j;0.0433-0.6412j];

    G=zpk(Z,P,KGain)

     

    运行结果:

    注意:对于单变量系统,其零极点均是用列向量来表示的,故Z、P向量中各项均用分号(;)隔开。

     

    3. 反馈系统结构图模型

     

    设反馈系统结构图如图5所示。

    控制系统工具箱中提供了feedback()函数,用来求取反馈连接下总的系统模型,该函数调用格式如下:

    G=feedback(G1,G2,sign);

    其中变量sign用来表示正反馈或负反馈结构,若sign=-1表示负反馈系统的模型,若省略sign变量,则仍将表示负反馈结构。G1和G2分别表示前向模型和反馈模型的LTI(线性时不变)对象。

    例5 若反馈系统图5中的两个传递函数分别为:

    则反馈系统的传递函数可由下列的MATLAB命令得出

     

    >> G1=tf(1,[1,2,1]);

    G2=tf(1,[1,1]);

    G=feedback(G1,G2)

    运行结果:

    若采用正反馈连接结构输入命令

    >> G=feedback(G1,G2,1)

    则得出如下结果:

    例6 若反馈系统为更复杂的结构如图6所示。其中

    则闭环系统的传递函数可以由下面的MATLAB命令得出:

    >> G1=tf([1,7,24,24],[1,10,35,50,24]);

    G2=tf([10,5],[1,0]);

    H=tf([1],[0.01,1]);

    G_a=feedback(G1*G2,H)

     

    得到结果:

    Transfer function:

    4. 有理分式模型与零极点模型的转换

    有了传递函数的有理分式模型之后,求取零极点模型就不是一件困难的事情了。在控制系统工具箱中,可以由zpk()函数立即将给定的LTI对象G转换成等效的零极点对象G1。该函数的调用格式为:

     G1=zpk(G) (11)

     

    例7 给定系统传递函数为:

    对应的零极点格式可由下面的命令得出

    >> num=[6.8, 61.2, 95.2];

    den=[1, 7.5, 22, 19.5, 0];

    G=tf(num,den);

    G1=zpk(G)

     

    显示结果:

    可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。

    同样,对于给定的零极点模型,也可以直接由MATLAB语句立即得出等效传递函数模型。调用格式为:

    G1=tf(G)  

     

    例8 给定零极点模型:


    可以用下面的MATLAB命令立即得出其等效的传递函数模型。输入程序的过程中要注意大小写。

     

    >> Z=[-2,-7];

     

    P=[0,-3-2j,-3+2j,-1.5];

     

    K=6.8;

     

    G=zpk(Z,P,K);

     

    G1=tf(G)

     

    结果显示:

    5. Simulink建模方法

     

    在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。Simulink是由Math Works 软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。它具有两个显著的功能:Simul(仿真)与Link(连接),亦即可以利用鼠标在模型窗口上"画"出所需的控制系统模型。然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。与MATLAB中逐行输入命令相比,这样输入更容易,分析更直观。下面简单介绍SIMULINK建立系统模型的基本步骤:

    (1) SIMULINK的启动:在MATLAB命令窗口的工具栏中单击按钮或者在命令提示符>>下键入simulink命令,回车后即可启动Simulink程序。启动后软件自动打开Simullink模型库窗口,如图 7所示。

    这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。若想建立一个控制系统结构框图,则应该选择File| New菜单中的Model选项,或选择工具栏上new Model按钮,打开一个空白的模型编辑窗口如图 8所示。

    (2) 画出系统的各个模块:打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖到模型编辑窗口的合适位置。

    (3) 给出各个模块参数:由于选中的各个模块只包含默认的模型参数,如默认的传递函数模型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。要修改模块的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。

    (4) 画出连接线:当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整的系统。模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。

    指定输入和输出端子:在Simulink下允许有两类输入输出信号,第一类是仿真信号,可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。

    例9 典型二阶系统的结构图如图9所示。用SIMULINK对系统进行仿真分析。

    按前面步骤,启动simulink并打开一个空白的模型编辑窗口。

    (1)画出所需模块,并给出正确的参数:

    →在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标左键双击该图标,打开参数设定的对话框,将参数step time(阶跃时刻)设为0。

    →在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图标将参数List of signs(符号列表)设为|+-(表示输入为正,反馈为负)。

    →在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(Transfer Fcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。

    →在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将之拖到编辑窗口中。

    2)将画出的所有模块按图9用鼠标连接起来,构成一个原系统的框图描述如图10所示。

    3)选择仿真算法和仿真控制参数,启动仿真过程。

    →在编辑窗口中点击Simulation|Simulation parameters菜单,会出现一个参数对话框,在solver模板中设置响应的仿真范围StartTime(开始时间)和StopTime(终止时间),仿真步长范围Maxinum step size(最大步长)和Mininum step size(最小步长)。对于本例,StopTime可设置为2。最后点击Simulation|Start菜单或点击相应的热键启动仿真。双击示波器,在弹出的图形上会"实时地"显示出仿真结果。输出结果如图11所示。

    →在命令窗口中键入whos命令,会发现工作空间中增加了两个变量――tout和yout,这是因为Simulink中的Out1 模块自动将结果写到了MATLAB的工作空间中。利用MATLAB命令plot(tout,yout),可将结果绘制出来,如图12所示。比较11和12,可以发现这两种输出结果是完全一致的。

    (2) 利用MATLAB进行时域分析

    1. 线性系统稳定性分析

    线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。系统的零极点模型可以直接被用来判断系统的稳定性。另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。

    (1)直接求特征多项式的根

    设p为特征多项式的系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内的解v,该函数的调用格式为:

    v=roots(p) (13)

    例10 已知系统的特征多项式为:

    特征方程的解可由下面的MATLAB命令得出。

    >> p=[1,0,3,2,1,1];

    v=roots(p)

    结果显示:

    v =

    0.3202 + 1.7042i

    0.3202 - 1.7042i

    -0.7209

    0.0402 + 0.6780i

    0.0402 - 0.6780i

    利用多项式求根函数roots(),可以很方便的求出系统的零点和极点,然后根据零极点分析系统稳定性和其它性能。

    (2)由根创建多项式

    如果已知多项式的因式分解式或特征根,可由MATLAB函数poly()直接得出特征多项式系数向量,其调用格式为:

    p=poly(v) 

    如上例中:

    v=[0.3202+1.7042i;0.3202-1.7042i;

    -0.7209;0.0402+0.6780i; 0.0402-0.6780i];

    >> p=poly(v)

    结果显示

    p =

    1.0000 -0.0000 3.0000 2.0000 1.0000 1.0000

    由此可见,函数roots()与函数poly()是互为逆运算的。

    (3)多项式求值

    在MATLAB 中通过函数polyval()可以求得多项式在给定点的值,该函数的调用格式为:

    polyval(p,v) (15)

    对于上例中的p值,求取多项式在x点的值,可输入如下命令:

    >> p=[1,0,3,2,1,1];

    x=1

    polyval(p,x)

    结果显示

    ans =

    8

    (4)部分分式展开

    考虑下列传递函数:

    MATLAB函数可将展开成部分分式,直接求出展开式中的留数、极点和余项。该函数的调用格式为:

    例11 设传递函数为:

    该传递函数的部分分式展开由以下命令获得:

    >> num=[2,5,3,6];

    den=[1,6,11,6];

    [r,p,k]=residue(num,den)

    命令窗口中显示如下结果

    r= p= k=

    -6.0000 -3.0000 2

    -4.0000 -2.0000

    3.0000 -1.0000

    中留数为列向量r,极点为列向量p,余项为行向量k。

    由此可得出部分分式展开式:

    该函数也可以逆向调用,把部分分式展开转变回多项式之比的形式,命令格式为:

    [num,den]=residue(r,p,k)

    对上例有:

    >> [num,den]=residue(r,p,k)

    结果显示

    num=

    2.0000 5.0000 3.0000 6.0000

    den=

    1.0000 6.0000 11.0000 6.0000

    应当指出,如果p(j)=p(j+1)=…=p(j+m-1),则极点p(j)是一个m重极点。在这种情况下,部分分式展开式将包括下列诸项:

    例12 设传递函数为:

    则部分分式展开由以下命令获得:

    >> v=[-1,-1,-1]

    num=[0,1,2,3];

    den=poly(v);

    [r,p,k]=residue(num,den)

    结果显示

    r=

    1.0000

    0.0000

    2.0000

    p=

    -1.0000

    -1.0000

    -1.0000

    k=

    [ ]

    其中由poly()命令将分母化为标准降幂排列多项式系数向量den, k=[]为空矩阵。

    由上可得展开式为:

    (5)由传递函数求零点和极点。

    在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:

    Z=tzero(G)

    P=G.P{1}

    注意:式19中要求的G必须是零极点模型对象,且出现了矩阵的点运算"."和大括号{}表示的矩阵元素,详细内容参阅后面章节。

    例13 已知传递函数为:

     

    输入如下命令:

    num=[6.8,61.2,95.2];

    den=[1,7.5,22,19.5,0];

    G=tf(num,den);

    G1=zpk(G);

    Z=tzero(G)

    P=G1.P{1}

    结果显示

    Z =

    -7

    -2

    P =

    0

    -3.0000 + 2.0000i

    -3.0000 - 2.0000i

    -1.5000

    其结果与例8完全一致。

    (6)零极点分布图。

    在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:

    pzmap(num,den) 

     

    例 14 给定传递函数:

    利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图13所示。

     

    2. 系统动态特性分析。

    (1)时域响应解析算法――部分分式展开法。

    用拉氏变换法求系统的单位阶跃响应,可直接得出输出c(t)随时间t变化的规律,对于高阶系统,输出的拉氏变换象函数为:

    对函数c(s)进行部分分式展开,我们可以用num,[den,0]来表示c(s)的分子和分母。

    例 15 给定系统的传递函数:

    (2)单位阶跃响应的求法:

    控制系统工具箱中给出了一个函数step()来直接求取线性系统的阶跃响应,如果已知传递函数为:

    则该函数可有以下几种调用格式:

    step(num,den) (22)

    step(num,den,t) (23)

    step(G) (24)

    step(G,t) (25)

    该函数将绘制出系统在单位阶跃输入条件下的动态响应图,同时给出稳态值。对于式23和25,t为图像显示的时间长度,是用户指定的时间向量。式22和24的显示时间由系统根据输出曲线的形状自行设定。

    如果需要将输出结果返回到MATLAB工作空间中,则采用以下调用格式:

    c=step(G)    (26)

    此时,屏上不会显示响应曲线,必须利用plot()命令去查看响应曲线。plot 可以根据两

    个或多个给定的向量绘制二维图形,详细介绍可以查阅后面的章节。

    例16 已知传递函数为:

    利用以下MATLAB命令可得阶跃响应曲线如图14所示。

    (3)求阶跃响应的性能指标

    MATLAB提供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标。我们首先介绍一种最简单的方法――游动鼠标法。对于例16,在程序运行完毕后,用鼠标左键点击时域响应图线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。按住鼠标左键在曲线上移动,可以找到曲线幅值最大的一点――即曲线最大峰值,此时小方框中显示的时间就是此二阶系统的峰值时间,根据观察到的稳态值和峰值可以计算出系统的超调量。系统的上升时间和稳态响应时间可以依此类推。这种方法简单易用,但同时应注意它不适用于用plot()命令画出的图形。

    另一种比较常用的方法就是用编程方式求取时域响应的各项性能指标。与上一段介绍的游动鼠标法相比,编程方法稍微复杂,但通过下面的学习,读者可以掌握一定的编程技巧,能够将控制原理知识和编程方法相结合,自己编写一些程序,获取一些较为复杂的性能指标。

    通过前面的学习,我们已经可以用阶跃响应函数step( )获得系统输出量,若将输出量返回到变量y中,可以调用如下格式

    [y,t]=step(G) (27)

    该函数还同时返回了自动生成的时间变量t,对返回的这一对变量y和t的值进行计算,可以得到时域性能指标。

    ① 峰值时间(timetopeak)可由以下命令获得:

    [Y,k]=max(y); (28)

    timetopeak=t(k) (29)

    应用取最大值函数max()求出y的峰值及相应的时间,并存于变量Y和k中。然后在变量t中取出峰值时间,并将它赋给变量timetopeak。

    ② 最大(百分比)超调量(percentovershoot)可由以下命令得到:

    C=dcgain(G);

    [Y,k]=max(y); (30)

    percentovershoot=100*(Y-C)/C (31)

    dcgain( )函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。

    ③ 上升时间(risetime)可利用MATLAB中控制语句编制M文件来获得。首先简单介绍一下循环语句while的使用。

    while循环语句的一般格式为:

    while<循环判断语句>

    循环体

    end

    其中,循环判断语句为某种形式的逻辑判断表达式。

    当表达式的逻辑值为真时,就执行循环体内的语句;当表达式的逻辑值为假时,就退出当前的循环体。如果循环判断语句为矩阵时,当且仅当所有的矩阵元素非零时,逻辑表达式的值为真。为避免循环语句陷入死循环,在语句内必须有可以自动修改循环控制变量的命令。

    要求出上升时间,可以用while语句编写以下程序得到:

    C=dcgain(G);

    n=1;

    while y(n)<C

    n=n+1;

    end

    risetime=t(n)

    在阶跃输入条件下,y 的值由零逐渐增大,当以上循环满足y=C时,退出循环,此时对应的时刻,即为上升时间。

    对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下:

    C=dcgain(G);

    n=1;

    while y(n)<0.1*C

    n=n+1;

    end

    m=1;

    while y(n)<0.9*C

    m=m+1;

    end

    risetime=t(m)-t(n)

    ④ 调节时间(setllingtime)可由while语句编程得到:

    C=dcgain(G);

    i=length(t);

    while(y(i)>0.98*C)&(y(i)<1.02*C)

    i=i-1;

    end

    setllingtime=t(i)

    用向量长度函数length( )可求得t序列的长度,将其设定为变量i的上限值。

    例 17 已知二阶系统传递函数为:

    利用下面的stepanalysis.m程序可得到阶跃响应如图 15及性能指标数据。

    >> G=zpk([ ],[-1+3*i,-1-3*i ],3);

    % 计算最大峰值时间和它对应的超调量。

    C=dcgain(G)

    [y,t]=step(G);

    plot(t,y)

    grid

    [Y,k]=max(y);

    timetopeak=t(k)

    percentovershoot=100*(Y-C)/C

    % 计算上升时间。

    n=1;

    while y(n)<C

    n=n+1;

    end

    risetime=t(n)

    % 计算稳态响应时间。

    i=length(t);

    while(y(i)>0.98*C)&(y(i)<1.02*C)

    i=i-1;

    end

    setllingtime=t(i)

    运行后的响应图如图 15,命令窗口中显示的结果为

    C = timetopeak =

    0.3000 1.0491

    percentovershoot = risetime =

    35.0914 0.6626

    setllingtime =

    3.5337

    有兴趣的读者可以用本节介绍的游动鼠标法求取此二阶系统的各项性能指标。将它们与例18得出的结果相比较,会发现它们是一致的。

     

    3. 利用MATLAB绘制系统根轨迹

    假设闭环系统中的开环传递函数可以表示为:

     

    则闭环特征方程为:

    特征方程的根随参数K的变化而变化,即为闭环根轨迹。控制系统工具箱中提供了rlocus()函数,可以用来绘制给定系统的根轨迹,它的调用格式有以下几种:

    rlocus(num,den) (32)

    rlocus(num,den,K) (33)

    或者   rlocus(G)     (34)

    rlocus(G,K) (35)

    以上给定命令可以在屏幕上画出根轨迹图,其中G为开环系统G0(s)的对象模型,K为用户自己选择的增益向量。如果用户不给出K向量,则该命令函数会自动选择K向量。如果在函数调用中需要返回参数,则调用格式将引入左端变量。如

    [R,K]=rlocus(G) (36)

    此时屏幕上不显示图形,而生成变量R和K。

    R为根轨迹各分支线上的点构成的复数矩阵,K向量的每一个元素对应于R矩阵中的一行。若需要画出根轨迹,则需要采用以下命令:

       (37)

    plot()函数里引号内的部分用于选择所绘制曲线的类型,详细内容见表1。控制系统工具箱中还有一个rlocfind()函数,该函数允许用户求取根轨迹上指定点处的开环增益值,并将该增益下所有的闭环极点显示出来。这个函数的调用格式为:

    [K,P]=rlocfind(G)  (38)

    这个函数运行后,图形窗口中会出现要求用户使用鼠标定位的提示,用户可以用鼠标左键点击所关心的根轨迹上的点。这样将返回一个K变量,该变量为所选择点对应的开环增益,同时返回的P变量则为该增益下所有的闭环极点位置。此外,该函数还将自动地将该增益下所有的闭环极点直接在根轨迹曲线上显示出来。

    例18 已知系统的开环传递函数模型为:

    利用下面的MATLAB命令可容易地验证出系统的根轨迹如图16所示。

    >> G=tf(1,[conv([1,1],[1,2]),0]);

    rlocus(G);

    grid

    title(?Root_Locus Plot of G(s)=K/[s(s+1)(s+2)]?)

    xlabel(?Real Axis?) % 给图形中的横坐标命名。

    ylabel(?Imag Axis?) % 给图形中的纵坐标命名。

    [K,P]=rlocfind(G)

    用鼠标点击根轨迹上与虚轴相交的点,在命令窗口中可发现如下结果

    select_point=0.0000+1.3921i

    K=

    5.8142

    p=

    -2.29830

    -0.0085+1.3961i

    -0.0085-1.3961i

    所以,要想使此闭环系统稳定,其增益范围应为0<K<5.81。

    参数根轨迹反映了闭环根与开环增益K的关系。我们可以编写下面的程序,通过K的变化,观察对应根处阶跃响应的变化。考虑K=0.1,0.2,…,1,2,…,5,这些增益下闭环系统的阶跃响应曲线。可由以下MATLAB命令得到。

    >> hold off; % 擦掉图形窗口中原有的曲线。

    t=0:0.2:15;

    Y=[ ];

    for K=[0.1:0.1:1,2:5]

    GK=feedback(K*G,1);

    y=step(GK,t);

    Y=[Y,y];

    end

    plot(t,Y)

    对于for循环语句,循环次数由K给出。系统画出的图形如图17所示。可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。一旦K接近临界K值,振荡加剧,性能变坏。

    4. MATLAB绘图的基本知识

     通过以上实例的应用,我们已初步尝试了MATLAB的绘图功能。MATLAB具有丰富的获取图形输出的程序集。我们已用命令plot()产生线性x-y图形(用命令loglog、semilogx、semilogy或polar取代命令plot,可以产生对数坐标图和极坐标图)。所有这些命令的应用方式都是相似的,它们只是在如何给坐标轴进行分度和如何显示数据上有所差别。

    (1)二维图形绘制

    如果用户将X和Y轴的两组数据分别在向量x和y中存储,且它们的长度相同,则命令

    plot(x,y) (39)

    将画出y值相对于x值的关系图。

    例19 如果想绘制出一个周期内的正弦曲线,则首先应该用t=0:0.01:2*pi(pi是系统自定义的常数,可用help命令显示其定义)命令来产生自变量t;然后由命令y=sin(t)对t向量求出正弦向量y,这样就可以调用plot(t,y)来绘制出所需的正弦曲线,如图18所示。

     

    (2)一幅图上画多条曲线。

    利用具有多个输入变量的plot( )命令,可以在一个绘图窗口上同时绘制多条曲线,命令格式为:

    plot(x1,Y1,x2,Y2,…,xn,Yn) (40)

    x1、Y1、x2、Y2等一系列变量是一些向量对,每一个x-y对都可以用图解表示出来,因而可以在一幅图上画出多条曲线。多重变量的优点是它允许不同长度的向量在同一幅图上显示出来。每一对向量采用不同的线型以示区别。

    另外,在一幅图上叠画一条以上的曲线时,也可以利用hold命令。hold命令可以保持当前的图形,并且防止删除和修改比例尺。因此,后来画出的那条曲线将会重叠在原曲线图上。当再次输入命令hold,会使当前的图形复原。也可以用带参数的hold命令――hold on 和hold off来启动或关闭图形保持。

    (3)图形的线型和颜色

    为了区分多幅图形的重叠表示,MATLAB提供了一些绘图选项,可以用不同的线型或颜色来区分多条曲线,常用选项见下表1

    表1中绘出的各个选项有一些可以并列使用,能够对一条曲线的线型和颜色同时作出规定。例如′--g′表示绿色的短划线。带有选项的曲线绘制命令的调用格式为:

    plot(X1,Y1,S1,X2,Y2,S2,…) (41)

    (4)加进网络线、图形标题、x轴和y轴标记

    一旦在屏幕上显示出图形,就可以依次输入以下相应的命令将网络格线、图形标题、x、y轴标记叠加在图形上。命令格式如下:

    grid(网络线) (42)

    title(′图形标题′) (43)

    xlabel(′x轴标记′)  (44)

    ylabel(′y轴标记′)  (45)

    函数引号内的字符串将被写到图形的坐标轴上或标题位置。

    (5)在图形屏幕上书写文本。

      如果想在图形窗口中书写文字,可以单击按钮,选择屏幕上一点,点击鼠标,在光标处输入文字。另一种输入文字的方法是用text()命令。它可以在屏幕上以(x,y)为坐标的某处书写文字,命令格式如下:

    text(x,y,′text′)  (46)

    例如,利用语句

    text(3,0.45,′sint′)

    将从点(3,0.45)开始,水平的写出"sint"。

    (6)自动绘图算法及手工坐标轴定标

    在MATLAB图形窗口中,图形的横、纵坐标是自动标定的,在另一幅图形画出之前,这幅图形作为现行图将保持不变,但是在另一幅图形画出后,原图形将被删除,坐标轴自动地重新标定。关于瞬态响应曲线、根轨迹、伯德图、奈魁斯特图等的自动绘图算法已经设计出来,它们对于各类系统具有广泛的适用性,但是并非总是理想的。因此,在某些情况下,可能需要放弃绘图命令中的坐标轴自动标定特性,由用户自己设定坐标范围,可以在程序中加入下列语句:

    v=[x-min x-max y-min y-max] (47)

    axis(v) (48)

    式中v是一个四元向量。axis(v)把坐标轴定标建立在规定的范围内。对于对数坐标图,v的元素应为最小值和最大值的常用对数。

    执行axis(v)会把当前的坐标轴标定范围保持到后面的图中,再次键入axis可恢复系统的自动标定特性。

    Axis(′sguare′)能够把图形的范围设定在方形范围内。对于方形长宽比,其斜率为1的直线恰位于45°上,它不会因屏幕的不规则形状而变形。Axis(′normal′)将使长宽比恢复到正常状态。

    5、线性系统的频域分析。

    (1)频率特性函数

    设线性系统传递函数为:

    由下面的MATLAB语句可直接求出G(jw)。

    i=sqrt(-1)     %   求取-1的平方根  (49)

    GW=polyval(num,i*w)./polyval(den,i*w) (50)

    其中(num,den)为系统的传递函数模型。而w为频率点构成的向量,点右除(./)运算符表示操作元素点对点的运算。从数值运算的角度来看,上述算法在系统的极点附近精度不会很理想,甚至出现无穷大值,运算结果是一系列复数返回到变量GW中。

    (2)用MATLAB作奈魁斯特图。

    控制系统工具箱中提供了一个MATLAB函数nyquist( ),该函数可以用来直接求解Nyquist    阵列或绘制奈氏图。当命令中不包含左端返回变量时,nyquist()函数仅在屏幕上产生奈氏图,命令调用格式为:

     nyquist(num,den) (51)

     nyquist(num,den,w) (52)

    或者

     nyquist(G) (53)

     nyquist(G,w) (54)

    该命令将画出下列开环系统传递函数的奈氏曲线:

    如果用户给出频率向量w,则w包含了要分析的以弧度/秒表示的诸频率点。在这些频率点上,将对系统的频率响应进行计算,若没有指定的w向量,则该函数自动选择频率向量进行计算。

    对于式43和45用户不必给定频率向量,系统会自动选择频率向量进行计算。式44和46需要用户给出率向量w。w包含了用户要分析的以弧度/秒表示的诸频率点,MATLAB会自动计算这些点的频率响应。

    当命令中包含了左端的返回变量时,即:

    [re,im,w]=nyquist(G)  (55)

    [re,im,w]=nyquist(G,w) (56)

    函数运行后不在屏幕上产生图形,而是将计算结果返回到矩阵re、im和w中。矩阵re和im分别表示频率响应的实部和虚部,它们都是由向量w中指定的频率点计算得到的。

    在运行结果中,w数列的每一个值分别对应re、im数列的每一个值。

    例20 考虑二阶典型环节:

    试利用MATLAB画出奈氏图。

    利用下面的命令,可以得出系统的奈氏图,如图19所示。

    >> num=[0,0,1];

    den=[1,0.8,1];

    nyquist(num,den)

    % 设置坐标显示范围

    v=[-2,2,-2,2];

    axis(v)

    grid

    (3)用MATLAB作伯德图

    控制系统工具箱里提供的bode()函数可以直接求取、绘制给定线性系统的伯德图。

    当命令不包含左端返回变量时,函数运行后会在屏幕上直接画出伯德图。如果命令表达式的左端含有返回变量,bode()函数计算出的幅值和相角将返回到相应的矩阵中,这时屏幕上不显示频率响应图。命令的调用格式为:

    [mag,phase,w]=bode(num,den)  (57)

    [mag,phase,w]=bode(num,den,w) (58)

    [mag,phase,w]=bode(G) (59)

    [mag,phase,w]=bode(G,w) (60)

    矩阵mag、phase包含系统频率响应的幅值和相角,这些幅值和相角是在用户指定的频率点上计算得到的。用户如果不指定频率w,MATLAB会自动产生w向量,并根据w向量上各点计算幅值和相角。这时的相角是以度来表示的,幅值为增益值,在画伯德图时要转换成分贝值,因为分贝是作幅频图时常用单位。可以由以下命令把幅值转变成分贝:

    magdb=20﹡log10(mag)  (61)

    绘图时的横坐标是以对数分度的。为了指定频率的范围,可采用以下命令格式:

    logspace(d1,d2) (62)

    或  

    logspace(d1,d2,n)     (63)

    公式(62)是在指定频率范围内按对数距离分成50等分的,即在两个十进制数之间产生一个由50个点组成的分量,向量中的点数50是一个默认值。例如要在之间的频区画伯德图,则输入命令时,在此频区自动按对数距离等分成50个频率点,返回到工作空间中,即

    w=logspace(-1,2)

    要对计算点数进行人工设定,则采用公式(63)。例如,要在之间产生100个对数等分点,可输入以下命令:

    w=logspace(0,3,100)

    在画伯德图时,利用以上各式产生的频率向量w,可以很方便地画出希望频率的伯德图。

    由于伯德图是半对数坐标图且幅频图和相频图要同时在一个绘图窗口中绘制,因此,要用到半对数坐标绘图函数和子图命令。

     

    (1)对数坐标绘图函数

     

    利用工作空间中的向量x,y绘图,要调用plot函数,若要绘制对数或半对数坐标图,只需要用相应函数名取代plot即可,其余参数应用与plot完全一致。命令公式有:

     

    semilogx(x,y,s) (64)

     

    上式表示只对x轴进行对数变换,y轴仍为线性坐标。

     

    semilogy(x,y,s)  (65)

     

    上式是y轴取对数变换的半对数坐标图。

     

    Loglog(x,y,s) (66)

    上式是全对数坐标图,即x轴和y 轴均取对数变换。

     

     

    (2)子图命令

     

    MATLAB允许将一个图形窗口分成多个子窗口,分别显示多个图形,这就要用到subplot()函数,其调用格式为:

     

     subplot(m,n,k)

     

    该函数将把一个图形窗口分割成m×n个子绘图区域,m为行数,n为列数,用户可以通过参数k调用各子绘图区域进行操作,子图区域编号为按行从左至右编号。对一个子图进行的图形设置不会影响到其它子图,而且允许各子图具有不同的坐标系。例如,subplot(4,3,6)则表示将窗口分割成4×3个部分。在第6部分上绘制图形。 MATLAB最多允许9×9的分割。

     

    例21 给定单位负反馈系统的开环传递函数为:

    试画出伯德图。

     

    利用以下MATLAB程序,可以直接在屏幕上绘出伯德图如图20。

     

    >> num=10*[1,1];

     

    den=[1,7,0];

     

    bode(num,den)

     

    grid

     

    title(′Bode Diagram of G(s)=10*(s+1)/[s(s+7)] ′)

     

    该程序绘图时的频率范围是自动确定的,从0.01弧度/秒到30弧度/秒,且幅值取分贝值,w轴取对数,图形分成2个子图,均是自动完成的。

    如果希望显示的频率范围窄一点,则程序修改为:

     

    >> num=10*[1,1];

     

    den=[1,7,0];

     

    w=logspace(-1,2,50); % 从0.1至100,取50个点。

     

    [mag, phase, w]=bode(num, den, w);

     

    magdB=20*log10(mag) % 增益值转化为分贝值。

     

     

    % 第一个图画伯德图幅频部分。

     

    subplot(2,1,1);

     

    semilogx(w,magdB, ′-r′) % 用红线画

     

    grid

     

    title(′Bode Diagram of G(s)= 10*(s+1)/[s(s+7)] ′)

     

    xlabel(?Frequency(rad/s)?)

     

    ylabel(?Gain(dB)?)

     

     % 第二个图画伯德图相频部分。

     

    subplot(2,1,2);

     

    semilogx(w,phase, ?-r?);

     

    grid

     

    xlabel(?Frequency(rad/s)?)

     

    ylabel(′Phase(deg) ′)

    修改程序后画出的伯德图如21所示。

     

     

    4. 用MATLEB求取稳定裕量

     

     同前面介绍的求时域响应性能指标类似,由MATLAB里bode()函数绘制的伯德图也可以采用游动鼠标法求取系统的幅值裕量和相位裕量。例如,我们可以在图20的幅频曲线上按住鼠标左键游动鼠标,找出纵坐标(Magnitude)趋近于零的点,从提示框图中读出其频率约为7.25dB。然后在相频曲线上用同样的方法找到横坐标(Frequence)最接近7.25dB的点,可读出其相角为-53.9度,由此可得,此系统的相角裕量为126.1度。幅值裕量的计算方法与此类似。

     

    此外,控制系统工具箱中提供了margin()函数来求取给定线性系统幅值裕量和相位裕量,该函数可以由下面格式来调用:

     

    [Gm, Pm, Wcg, Wcp]=margin(G);  (67)

     

    可以看出,幅值裕量与相位裕量可以由LTI对象G求出,返回的变量对(Gm, Wcg)为幅值裕量的值与相应的相角穿越频率,而(Pm, Wcp)则为相位裕量的值与相应的幅值穿越频率。若得出的裕量为无穷大,则其值为Inf,这时相应的频率值为NaN(表示非数值),Inf和NaN均为MATLAB软件保留的常数。

     

    如果已知系统的频率响应数据,我们还可以由下面的格式调用此函数。

     

    [Gm, Pm, Wcg, Wcp]=margin(mag, phase, w);

     

    其中(mag, phase, w)分别为频率响应的幅值、相位与频率向量。

     

    例22 已知三阶系统开环传递函数为:

    利用下面的MATLAB程序,画出系统的奈氏图,求出相应的幅值裕量和相位裕量,并求出闭环单位阶跃响应曲线。

     

    >> G=tf(3.5,[1,2,3,2]);

     

    subplot(1,2,1);

     

    % 第一个图为奈氏图

     

    nyquist(G);

     

    grid

     

    xlabel('Real Axis')

     

    ylabel('Imag Axis')

     

    % 第二个图为时域响应图

     

    [Gm,Pm,Wcg,Wcp]=margin(G)

    G_c=feedback(G,1);

     

    subplot(1,2,2);

     

    step(G_c)

     

    grid

     

    xlabel(′Time(secs) ′)

     

    ylabel(′Amplitude′)

     

    显示结果为:

     

    ans=1.1429 1.1578

     

    1.7321 1.6542

    画出的图形如图22 所示。由奈氏曲线可以看出,奈氏曲线并不包围(-1,j0)点,故闭环系统是稳定的。由于幅值裕量虽然大于1,但很接近1,故奈氏曲线与实轴的交点离临界点(-1,j0)很近,且相位裕量也只有7.1578o,所以系统尽管稳定,但其性能不会太好。观察闭环阶跃响应图,可以看到波形有较强的振荡。

     

    如果系统的相角裕量γ>45o,我们一般称该系统有较好的相角裕量。

     

    例23 考虑一个新的系统模型,开环传递函数为:

    由下面MATLAB语句可直接求出系统的幅值裕量和相位裕量:

     

    >> G=tf(100*conv([1,5],[1,5]), conv([1,1],[1,1,9]));

     

    [Gm, Pm, Wcg, Wcp]=margin(G)

     

    结果显示 Gm = Pm =

     

    Inf 85.4365

     

     

     

    Wcg = Wcp =

     

    NaN      100.3285

     

    再输入命令

     

    >> G_c=feedback(G,1);

     

    step(G_c)

     

    grid

     

    xlalel(′Time(sec) ′)

     

    ylalel(′Amplitude′)

    可以看出,该系统有无穷大幅值裕量,且相角裕量高达85.4365o。所以系统的闭环响应是较理想的,闭环响应图如图23.

     

     

    5 时间延迟系统的频域响应

     

    (1) 时间延迟系统的传递函数模型

     

    带有延迟环节e-Ts的系统不具有有理函数的标准形式,在MATLAB中,建立这类系统的模型。要由一个属性设置函数set()来实现。该函数的调用格式为:

    set(H, ′属性名′, ′属性值′)       (68) 

    其中H为图形元素的句柄(handle)。在MATLAB中,当对图形元素作进一步操作时,只需对该句柄进行操作即可。例如以下调用格式

    h=plot(x,y)

    G=tf(num,den)

    Plot()函数将返回一个句柄h,tf()函数返回一个句柄G,要想改变句柄h所对应曲线的颜色,则可以调用下面命令:

    Set(h,color,[1,0,0]);

    即对"color"参数进行赋值,将曲线变成红色(由[1,0,0]决定)

    同样,要想对G句柄所对应模型的延迟时间'Td'进行修改,则可调用下面命令

    Set(G, ′Td′,T)

    其中T为延迟时间。由此修改后,模型G就已具有时间延迟特性。

    (2) 时间延迟系统的频域响应

    含有一个延迟环节的系统,其开环频域响应为

    可见,该系统的幅频特性不变,只加大了相位滞后。

    例24 考虑系统的开环模型为:

    当T=1时,我们可以由下面的MATLAB命令绘出系统的奈氏图,如图24所示,此系统对应的时域响应图为25。

    >> G=tf(1,[1, 1]);

    T=[1];

    w=[0, logspace(-3, 1, 100), logspace(1,2,200)];

    set(G,'Td', T); % 延迟1秒。

    nyquist(G,w)

    grid

    figure % 建立一个新的绘图窗口

    step(G)

    4 频域法串联校正的MATLAB方法

    利用MATLAB可以方便的画出Bode图并求出幅值裕量和相角裕量。将MATLAB应用到经典理论的校正方法中,可以方便的校验系统校正前后的性能指标。通过反复试探不同校正参数对应的不同性能指标,能够设计出最佳的校正装置。

    例25 给定系统如图26 所示,试设计一个串联校正装置,使系统满足幅值裕量大于10分贝,相位裕量≥45°

    解:为了满足上述要求,我们试探地采用超前校正装置Gc(s),使系统变为图27的结构。

    我们可以首先用下面地MATLAB语句得出原系统的幅值裕量与相位裕量。

    >> G=tf(100, [0.04, 1, 0]);

    [Gw, Pw, Wcg, Wcp]=margin(G);

    在命令窗口中显示如下结果

    w = Pw =

    Inf 28.0243

     

    Wcg = Wcp =

    Inf 46.9701

     

    可以看出,这个系统有无穷大的幅值裕量,并且其相位裕量幅值穿越频率Wcp=47rad/sec。

    引入一个串联超前校正装置:

    我们可以通过下面的MATLAB语句得出校正前后系统的Bode图如图28,校正前后系统的阶跃响应图如图29。其中、分别为校正前系统的幅值穿越频率、相角裕量、调节时间,分别为校正后系统的幅值穿越频率、相角裕量、调节时间。

    >> G1=tf(100,[0.04,1,0]); % 校正前模型

    G2=tf(100*[0.025,1],conv([0.04,1,0],[0.01,1])) % 校正后模型

    % 画伯德图,校正前用实线,校正后用短划线。

    bode(G1)

    hold

    bode(G2, ′--′)

    % 画时域响应图,校正前用实线,校正后用短划线。

    figure

    G1_c=feedback(G1,1)

    G2_c=feedback(G2,1)

    step(G1_c)

    hold

    step(G2_c, ′--′)

    可以看出,在这样的控制器下,校正后系统的相位裕量由28°增加到48°,调节时间由0.28s减少到0.08s。系统的性能有了明显的提高,满足了设计要求。

     

    5 自动控制理论模拟实验

    《自动控制理论》是一门理论性和实践性很强的专业基础课,前面我们通过计算机仿真,可以方便地研究系统性能,验证理论的正确性,加深对理论知识的理解。本节我们再通过电子模拟实验,学习和掌握系统模拟电路的构成和测试技术,进一步培养学生的实际动手能力和分析、研究问题的能力。

    在控制理论课程中,大部分院校目前拥有的实验设备是电子模拟学习机。这种专为教学实验制造的电子模拟学习机,体积较小,使用方便,实验箱中备有多个运算放大器构成的独立单元,再加上常用的电阻、电容等器件,通过手工连线、可以构成多种特性的被控对象和控制器。

    在基础训练阶段,实验手段采用模拟方法,除了灵活方便之外,还具有以下两个优点:

     

    电子模拟装置可建立较准确的数学模型,从而可以避免实际系统中常碰到的各种复杂因素,使初学者能够根据所学理论知识循序渐进地完成各项实验。

     

     

    在工程实践中,电子模拟方法有一定的实用价值,也是实验室常用的一种实验方法。

     

     当然,对于将来从事实际工作的学生来说,仅仅掌握模拟实验方法还是不够的,应在此基础上进行一些以实际系统为主要设备的实验训练。

     

     

    常用的实验设备和仪器

    以自控理论电子模拟学习机为核心的一组基本实验设备和仪器,共同完成对各种实验对象的模拟和测试任务,传统的测试手段下,构成基本实验必备仪器有以下几种:

     

    电子模拟学习机。

     

    超低频双踪示波器。

     

    超低频信号发生器。

     

    万用表。

    按照被测系统的数学模型,在电子模拟学习机上用基本运放单元模拟出相应的电路模型,然后模拟实验测试。

    随着计算机软、硬件的快速发展,人们越来越多地利用计算机实现的虚拟仪器代替传统仪器。目前,大多数实验室都是用计算机来实现信号的产生、测量与显示、系统的控制及数据处理,使实验过程更加方便,功能更强大

    A/D、D/A卡起模拟信号与数字信号的转换作用,还可产生不同的输入信号(阶跃、三角、正弦等),供实验时选用。使用时用RS232串口电缆将A/D、D/A卡与计算机连接起来。如果配备打印机,则可在实验的同时将实验结果打印输出。由于计算机可以方便地输入数据、观察数据,初学者可以在屏幕的提示下进行实验过程,使学习变的更加轻松。

     

    自控理论的基本实验

     

     

    实验一.  典型环节及阶跃响应测试

     

    实验的基本原理

     

    控制系统的模拟实验是采用复合网络法来模拟各种典型环节,即利用运算放大器和RC组成的不同输入网络和反馈网络组合,模拟出各种典型环节,然后按照给定系统的结构图将这些模拟环节连接起来,便得到了相应的模拟系统。然后将输入信号加到模拟系统的输入端,使系统产生动态响应。这时,可利用计算机或示波器等测试仪器,测量系统的输出,便可观测到系统的动态响应过程,并进行性能指标的测量。若改变系统的某一参数,还可进一步分析研究参数对系统性能的影响。

    在以下的实验过程中,为了更好地检验实验结果,避免过多地出现错误操作,我们将每一环节的正确结果,通过Simulink仿真软件绘出正确的图形,以便于读者检验实验结果的正确性。

     

    时域性能指标测量方法

     

    (1)最大超调量

    利用示波器或计算机显示器上测到的输出波形,读出响应最大值和稳态值所具有的刻度值,代入下式算出超调量:

       (60)

    (2)峰值时间

    根据示波器或显示器上输出的波形最大值,找出这一点在水平方向上所具有的刻度值,即可换算出或读出峰值时间

    (3)调节时间

    同样,读出水平方向上对应输出从零到进入5%或2%误差带时所占的刻度值,即可得到调节时间

     

    实验内容

    (1)比例环节

    模拟线路如图32

    由于输入信号r(t)是从运算放大器的反相输入端输入,所以输出信号和输入信号在相位上正好相反,传递函数中出现负号。为了观测方便,可以从输入端输入负阶跃信号。也可以在输出端连接一个反相器,如图33。

    ,将模拟学习机上手动阶跃信号(或信号发生器置于"手动阶跃")引入环节输入端,观测输出波形,并作记录。(为便于比较,应将输入信号与输出信号同时送入双踪示波器或计算机,两路信号同时在一个坐标系下显示。绘制曲线时,也用这种形式)。

    图34为Simulink 的仿真模块。为便于观察,阶跃信号输入时间设置为1s(系统默认值),后面的各个例题也都适当调整输入时间。增益(Gain)模块的增益放大倍数设为2。另外,也可以用鼠标双击各模块,设置适合其它参数。

    (2)积分环节

    模拟线路如图35 所示。

    ,按上述同样方法观测阶跃响应波形。用Simulink仿真的环节模块图如图36 (a)。由于积分环节附带的增益比较大(积分时间常数T=0.1),Scope(示波器)绘出图形的辐值显示范围并不是很理想。我们可以在Scope的显示图中点击鼠标右键,选Axes properties菜单,在弹出的对话框中设置Y-max属性为100,则输出结果如图36 (b)所示。

    (3)微分环节

    模拟线路图如图37。

    微分时间常数T可通过改变来选取。令,按上述同样步骤进行模拟和测试,观察微分环节的阶跃响应波形。用Simulink仿真的模块图为图38(a),在Scope绘出的图形中调整横纵坐标,得出的时域响应图如图38(b)所示。

     

    (4)惯性环节

    模拟线路如图39。

    (5)振荡环节

    实验二   系统频率特性测量

     

    利用简单仪器测量频率特性,测量精度是较差的,但物理意义明显,波形直观是其特点。本实验通过"李沙育图形"法进行频率特性测试,可以使学生通过实验观测到物理系统的频率响应,并根据测量值算出频率特性的幅值和相角,通过实验可以掌握测试频率特性的基本原理和方法。

     

     

    原理

     

    一个稳定的线性系统,在正弦信号的作用下,它的稳态输出将是一个与输入信号同频率的正弦信号,但其振幅和相位却随输入信号的频率不同而变化,测取不同频率下系统的输出、输入信号的振幅比及相位差,即可求得这个系统的幅频特性和相频特性。

    不断的改变的频率,就可以获得一系列形状不同的李沙育图形。由此求出各个频率所对应的相位差和幅值比,就可获得系统的频率特性。

    幅值比由测量数据按式(69)直接求出;而相位差的具体求法如下:

    显然上式仅当时成立,"李沙育图形"在四个象限的形状如图45 所示,注意箭头方向。

    实际的控制系统一般为相位滞后系统,即频率特性的相频是负的角度,相频特性滞后角按"李沙育图形"法,应按下式确定:

    第四象限:

    (72)  

    (逆时针)

    第三象限:

    (73)

    (逆时针)

    第二象限:

    (74)

    (顺时针)

    第一象限:

    (75)

    (顺时针)

    2 实验内容

     

    (1)给出三阶系统模拟电路如图46 所示

    对应的系统结构图如图47 所示。

    则开环传递函数为:

    接好线路,并将有关测试仪器按图48连接。

    将超低频正弦输入信号输入系统,调节输入信号幅度使被测对象在避免饱和的情况下,输出幅度尽可能大,以便于测量。然后调节示波器Y轴增益(量程范围),使在所取信号幅度下,图像达到满刻度。

    (3)在示波器上测量此时输入信号幅值(用表示),并记录在表3中,此后在输出幅度能有效测出时,一般不再改变输入信号的幅度。

    按表中给定的测点依次改变输入信号频率,测试并记录于表3中。

    为了提高读数精度,对示波器的X,Y轴增益可随时调节,以获得较好的"李沙育图形"。注意在X轴与Y轴增益不一致时,"李沙育图形"的形状可能会有所变化。读数后按相应的增益正确折算出值。另外,在转折频率附近以及穿越频率附近应多测几点。

    3. 实验报告

     

    (1)按被测对象的传递函数,画出模拟电路图

    (2)整理表3中的实验数据,在半对数坐标纸上作出被测系统的对数幅频特性和相频特性。

    (3)采用MATLAB语言,画出被测对象的Bode图,与上图进行比较,特别验证在测试点处的结果是否一致。

    (4)讨论"李沙育图形"法测试频率特性的优缺点,有效频率范围及测试精度。

     

    附:(1)用以下MATLAB命令绘制的开环系统伯德图见图49。

    >> G=tf(10,[conv([0,1,1],[0.001,0.1,1])]);

    Bode(G)

    grid

                                                                                                                                                                                                      图49  开环系统伯德图

    (2)采用以下MATLAB命令绘出的"李沙育图形"见图50

    >> G=tf(10,[conv([0.1,1],[0.001,0.1,1])]);

    %画频率为8的图。

    t=0:0.01:2*pi;

    u=sin(8*t);

    y=lsim(G,u,t);

    plot(u,y)

    %画频率为60的图。

    t=0:0.1:2*pi; % 设置新的时间间隔。

    figure

    u=sin(60*t);

    y=lsim(G,u,t);

    plot(u,y)

    其中,MATLAB函数lsim()是求任意输入下的响应,调用格式与step()函数基本一致,只是输入变量中必须包含任意输入u,向量u表示系统输入在各个时刻的值。

    如果想求取,可输入如下程序

    >> i=length(u);

    while(u(i)>0&u(i)<0)

    i=i-1;

    end

    y0=abs(y(i))

    ym=max(y)

    对频率为8时给定的u和y,可得如下结果:

    y0 = ym =

    8.9149 9.2467

                                                                                                                                                                                   图51(c)Simulink绘出的"李沙育图形"

    (3)应用Simulink仿真工具输出的响应曲线及画出的"李沙育图形"如图51所示。

    在图51(a)所示的编辑窗口中,点击Simulation|Simulation parameters菜单,将Simulation time设为:Start time设为0.0s,Stop time 设为3.0s。双击Sine Wave控件,将其Frequency设为8,Amplitude设为0.5,双击XY Graph控件,将x-min,x-max,y-min, y-max, sample time(采样时间间隔)分别设为-0.5,0.5,-4,4,-1。输出响应波形为图51(b),XY Graph绘出的"李沙育图形"为51(c).

     

    展开全文
  • MATLAB中的数值类型

    2020-04-28 19:39:36
    MATLAB中的数值类型 浮点数 MATLAB® 以双精度或单精度格式表示浮点数。默认为双精度,可以通过一个简单转换函数将任何数值转换为单精度数值(single())。 浮点数定义 双精度浮点 MATLAB 根据适用于双精度...

    MATLAB中的数值类型

    浮点数

    MATLAB® 以双精度或单精度格式表示浮点数。默认为双精度,可以通过一个简单的转换函数将任何数值转换为单精度数值(single())。

    浮点数的定义

    • 双精度浮点
      MATLAB 根据适用于双精度的 IEEE® 754 标准
      来构造双精度(即 double)数据类型。以 double 形式存储的任何值都需要 64 位。
    含义
    63 符号(0 = 正号、1 = 负号)
    62 - 52 指数,偏置为 1023
    51 到 0 数值 1.f 的小数 f(十进制)

    创建方式:

    a = 1.234567
    b = double(1.234567) %%模型就是double类型,很MATLAB
    
    • 单精度浮点
      MATLAB 根据适用于单精度的 IEEE® 754 标准
      来构造单精度(即 single)数据类型。以 single 形式存储的任何值都需要 32位。
    含义
    31 符号(0 = 正号、1 = 负号)
    30 - 23 指数,偏置为 127
    22 到 0 数值 1.f 的小数 f(十进制)
    b= single(1.235678);
    

    可以试一下

    b= single(1.2356789);
    

    超过了8位有效数字,不能精确表示,精度和表示问题可以参照 IEEE® 754 标准浮点数的精度
    使用32位的single 类型的数值,与使用 64 位的 double 类型的数值相比,前者需要的内存更少。但是,由于它们是使用较少的位存储的,因此 single 类型的数值所呈现的精度要低于 double 类型的数值。

    一般使用双精度来存储大于 3.4 x 1038 或约小于 -3.4 x 1038 的值。对于位于这两个范围之间的数值,可以使用双精度,也可以使用单精度,但单精度需要的内存更少。

    浮点数的算术运算

    双精度浮点
    可以使用 double 和以下的任何其他类来执行基本算术运算。如果一个或多个操作数为整数(标量或数组),则 double 操作数必须为标量。运算结果默认为 double 类型,除非另有说明:

    • single - 结果为 single 类型
    • double
    • int* 或 uint* - 结果与整数操作数具有相同的数据类型
    • char
    • logical

    单精度浮点数
    使用 single 和以下的任何其他类来执行基本算术运算。运算结果始终为 singlesingle不能与整数直接运算):

    • single
    • double
    • int* 或 uint* - 结果与整数操作数具有相同的数据类型 (single类型不能与int类型做运算)
    • char
    • logical

    整数

    MATLAB® 具有四个有符号整数类(int8、int16、int32、int64分别占用字节 1、 2、 4、 8个)和四个无符号整数类(uint8、uint16、uint32、uint64同样占用字节 1、 2、 4、 8个,其中u为unsigned的缩写)。

    定义方式:

    a = 6;
    b = single(a);
    
    %%%%有符号整数
    c = int64(a);
    d = int32(a);
    e = int16(a);
    f = int8(a);
    
    %%%%无符号整数
    g = uint64(a);
    h = uint32(a);
    i = uint16(a);
    j = uint8(a)
    

    MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据。要以整数形式存储数据,您需要从 double 转换为所需的整数类型。使用上表中所示的转换函数之一。

    例如,如果要以 16 位有符号整数形式存储赋给变量 x 的值 325,请键入
    x = int16(325);
    如果要转换为整数的数值带有小数部分,MATLAB 将舍入到最接近的整数。如果小数部分正好是 0.5,则 MATLAB 会从两个同样临近的整数中选择绝对值大小更大的整数。
    在Matlab中还有几种取整的函数分别是

    • floor() :向下取整
    • ceil():向上取整
    • round():四舍五入,取最近的整数
    • fix():向0取整,向原点方向取整

    如果将大于某个整数数据类型的最大值的数值转换为该类型,MATLAB 会将其设置为最大值。同样,若小于,MATLAB 会将其设置为最小值

    参考:matlab中定义数值型数据和相关函数
    mathworks浮点数
    mathworks整数

    展开全文
  • 请问下面 “~” 符号怎么解释 function handleKey(~,~) finish = 1; end [~,Idx] = fun('test'); %(矩阵中的~是什么意思) 另外这两段代码在 matlab2010b 可以运行 在 matlab7.0 就不行.~报错,如果要在...
  • 重要事说三遍,不要用错图形符号!不要用错图形符号!不要用错图形符号!掌握并熟练使用各种流程图图形,才能让我们流程图显得更加清晰、易读,显得我们更加专业。1,开始形状/结束形状,“跑道圆”形状代表开始...
  • matlab中的图像表达函数

    千次阅读 2018-04-11 19:14:25
    一、plot1. plot(x,y) 绘制因变量为y,自变量为x函数... 其中s含义如下表所示:符号颜色符号点形状符号图线形式bblue(蓝色).point-solid(实线)ggreen(绿色)ocircle:dotted(虚线)rred(红色)xx-mark-.dashdot(...
  • MATLAB的常用命令

    2020-03-30 13:24:42
    MATLAB命令 3.1MATLAB命令的组成 MATLAB的语法是基于c++语言的,因此MATLAB的语法和c++的语法非常的相似,但是MATLAB的语法相...MATLAB中的数字,字符,符号代表不同的含义,能够满足有忽的各种需求。如图(命令...
  • matlab

    2021-03-13 11:16:28
    a./b表示矩阵a中的每个元素除以矩阵b对应元素。 A.\B 左除。a.\b表示矩阵b中的每个元素除以矩阵a对应元素。 X.^2 是所有element 取平方 A^B AB次方 图 符号 含义 plot3(x,y,z) 三维线图 ...
  • 1、当我们在matlab中使用一个符号(标识符)时,由于它可能是变量名、特殊常量名、函数名、M文件、MEX文件等等,所以matlab软件将按照如下顺序(优先级)搜索确定这一符号的含义(依次搜索,搜到则停): ...
  • MATLAB中的特殊常量指是一些预先定义好数值变量,如下表所示: 含义 符号 圆周率π pi 机器浮点运算误差限 eps 虚数单位 i...
  • matlab文件路径

    2020-06-09 17:03:25
    matlab文件路径的各种.的含义 序号 符号 含义 1 . 表示当前目录 2 … 表示当前目录的上一级目录 3 ./ 表示当前目录下的某个文件或文件夹,视后面跟着的名字而定 4 …/ 表示当前目录上一级目录的文件...
  • Matlab 学习笔记

    2019-09-30 21:40:31
    ##第一章Matlab概述 Matlab通用命令: clc 清除命令行所有命令 clf 清除图形窗口 clear 清除工作区的内存变量 whos 列出工作区变量的类型以及其他的信息 ...quit 退出matlab ...Matlab 标点: ...有符号的...
  • 在科学的研究体系中,将数学公式与数据表现在图表中,是展示符号的具体物理含义及大量数据的内在联系和规律的科学有效的方法。 MATLAB中可以绘制二维、三维和四维的数据图形,并且通过对图形的线型、颜色、标记、...
  • matlab可视化

    千次阅读 2016-08-31 02:00:27
    不管根据计算得到数据堆或是符号堆是多么准确,人们还是很难从这一大堆原始 数据和符号中发现它们具体物理含义或是内在规律,而数据图形恰能使视觉感官直接感受 到数据许多内在本质,发现数据内在联系。...
  • 关于EsN0、EbN0与SNR三者关系描述,在MATLAB帮助文档搜索词条“AWGN Channel”有比较详细描述,但有些细节没有讲清楚。 简单翻译解释一下,就是 SNR表示每个采样点信号噪声比。 EbN0表示每个比特能量与...
  • Matlab学习笔记(一)

    2019-09-21 18:51:12
    Matlab学习笔记,记下学习中的点点滴滴... 1、Matlab基础 数据显示格式及其含义: 常用命令: 常用键盘快捷键及说明: 标点符号用法: 命令窗口常用命令: 2、数据类型 ...
  • MATLAB(图形展示)

    2018-12-14 17:02:21
    MATLAB(图形展示) 标签(空格分隔): 数据分析 ###知识点一 线是由连续的点组成 在画板画一个圆圈 ...特殊符号的含义 clc clear X1 = 1:20; Y1 = [[1:10],[10:-1:1]];%注意Y1需要和X1数量保持...
  • 利用matlab进行数字调制

    千次阅读 2020-11-01 23:30:42
    Simulink通信工具箱的Comm Sources/Data Sources提供了数字信号源Bernoulli Binary Generator,这是一个按Bernoulli分布提供...Probability of a zero :产生的信号0 符号的概率,在仿真的时候一般设成0.5,这样便
  • matlab】关于取整

    千次阅读 2016-07-04 14:45:38
    1、算法—离散数学┌ ┐和└ ┘的含义 这里介绍离散数学两个重要的函数,即底函数和顶函数。令x为实数。底函数把x下舍入到小于或等于x又最接近x的整数,而顶函数则把x上舍入到大于或等于x又最接近x的整数。在...
  • 利用R语言画图时添加希腊符号标注

    千次阅读 2015-01-11 07:54:20
    在LaTeX、Matlab中画出这些希腊符号标注,我已经尝试过,并且使用它们已经有一段日子了,关键是如何R中画出这些希腊符号。 R是一个开源以编程语言方式提供(本身也称为R语言)可以与其他类似软件相媲美统计...
  • 之后以专题形式,全面讲解了超文本标记语言(HTML)在MATLAB中的应用、表格设计及坐标轴设计。本章是GUI设计重点内容,需要熟练掌握。 第5章:预定义对话框。本章介绍了MATLAB环境下可调用所有预定义对话框,...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

matlab中符号的含义

matlab 订阅