MATLAB中M文件的调试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB中M文件的调试
dbstop in M文件名
执行M文件
就可以中断在M入口,
F8是单步,
查看变量在交互窗口直接输变量名就可以
M文件与MATLAB函数- [Matlab]
(一)、M文件编辑器
∙MATLAB用户应首先熟悉一下最经常使用的M文件编辑器(M File Editor)。

M文件编辑器不仅仅是一个文字编辑器,它还具有一定的程序调试功能,虽然没有像VC、BC那样强大的调试能力,但对于调试一般不过于复杂的MATLAB程序已经足够了。

在MATLAB命令行下输入:>>edit则弹出如图所示的M文件编辑器窗口。

∙1、编辑功能
∙(1) 选择:与通常鼠标选择方法类似,但这样做其实并不方便。

如果习惯了,使用Shift+箭头键是一种更为方便的方法,熟练后根本就不需要再看键盘。

∙(2) 拷贝粘贴:没有比Ctrl+C、Ctrl+V键更方便的了,相信使用过Windows的人一定知道。

∙(3) 寻找替代:寻找字符串时用Ctrl+F键显然比用鼠标点击菜单方便。

∙(4) 查看函数:阅读大的程序常需要看看都有哪些函数并跳到感兴趣的函数位置,M文件编辑器没有为用户提供像VC或者BC那样全方位的程序浏览器,却提供了一个简单的函数查找快捷按钮,单击该按钮,会列出该M文件所有的函数。

∙(5) 注释:如果用户已经有了很长时间的编程经验而仍然使用Shift+5来输入%号,一定体会过其中的痛苦(忘了切换输入法状态时,就会变成中文字符集的百分号)。

∙(6) 缩进:良好的缩进格式为用户提供了清晰的程序结构。

编程时应该使用不同的缩进量,以使程序显得错落有致。

增加缩进量用Ctrl+]键,减少缩进量用Ctrl+[键。

当一大段程序比较乱的时候,使用smart indent (聪明的缩进,快捷键Ctrl+I)也是一种很好的选择。

∙2、调试功能
∙M程序调试器的热键设置和VC的设置有些类似,如果用户有其它语言的编程调试经验,则调试M程序显得相当简单。

因为它没有指针的概念,这样就避免了一大类难以查找的错误。

不过M程序可能会经常出现索引错误,如果设置了stop if error(Breakpoints菜单下),则程序的执行会停在出错的位置,并在MATLAB命令行窗口显示出错信息。

下面列出了一些常用的调试方法。

∙(1) 设置或清除断点:使用快捷键F12。

∙(2) 执行:使用快捷键F5。

∙(3) 单步执行:使用快捷键F10。

∙(4) step in:当遇见函数时,进入函数内部,使用快捷键F11。

∙(5) step out:执行流程跳出函数,使用快捷键Shift+F11。

∙(6) 执行到光标所在位置:非常遗憾这项功能没有快捷键,只能使用菜单来完成这样的功能。

∙(7) 观察变量或表达式的值:将鼠标放在要观察的变量上停留片刻,就会显示出变量的值,当矩阵太大时,只显示矩阵的维数。

∙(8) 退出调试模式:没有设置快捷键,使用菜单或者快捷按钮来完成。

∙(二)、MATLAB语言的语法
∙1、注释
∙MATLAB中用百分号%表示其后为程序注释(实际上在前面已经碰到了这样的注释)。

编写M程序和编写其它程序一样应该养成良好的程序注释习惯。

除了程序间的注释,编写M文件时还应该在文件头说明该程序的功能和使用方法,使用Help命令看到的帮助信息正是这些在文件头的注释。

∙ 2. 赋值语句
∙在MATLAB中,赋值语句的基本语法结构为
∙variablename=value;
∙ 3. 逻辑表达式
∙在MATLAB中,逻辑表达式的基本语法结构为
∙logicalvalue=variable1 关系运算符varialble2;
∙logicalvalue=logical expression 1 逻辑运算符logical expression 2;
∙其中关系运算符有= =(等于)、~=(不等于)、>(大于)、<(小于)、>=(不小于)、<=(不大于)等。

逻辑运算符有&(逻辑与)、|(逻辑或)和~(逻辑非)等。

∙ 4. 条件控制语句
∙MATLAB中由if语句进行判断,其基本语法结构为
∙if 逻辑表达式
∙语句集合
∙End
∙在if与逻辑表达式之间必须有一个空格;当逻辑表达式值为真时,执行语句集合中的语句;这里语句集合可以是MATLAB中的单独命令,也可以是由逗号、分号隔开的语句集合或return语句。

∙对于简单的语句也可以写成下面的形式:
∙if 逻辑表达式,语句集合,end
∙此外,if语句还可以与elseif、else组合成更为复杂的控制语句,其语法格式如下:
∙if 逻辑表达式
∙语句集合1
∙Else
∙语句集合2
∙end
∙ 5. 循环语句
∙MATLAB中实现循环的语句有两种:for语句与while语句,以实现某些语句的循环执行。

for语句语法格式如下:
∙for 变量=表达式
∙语句集合
∙end
用MATLAB的SIMULINK进行模糊控制系统仿真
宋瑞1,林青家2,夏佃秀3
(1 济南市广播电视局,山东济南 250014;2 山东教育电视台,山东济南 250014;
3济南钢铁集团总公司,山东济南 250101)
摘要:介绍了用MATLAB模糊逻辑工具箱进行模糊控制器的设计方法,同时给出了用MATLAB的SIMULINK 进行仿真的结果。

表明利用MATLAB软件的模糊逻辑工具箱可灵活设计模糊控制器,并可通过仿真结果寻找最佳控制方案,缩短设计周期。

关键词:MATLAB;SIMULINK;模糊控制;仿真
中图分类号:TP391.9 文献标识码:B 文章编号:1004-4620(2003)03-0054-02
Using MATLAB's SIMULINK to Make the Simulation of Fuzzy Control System
SONG Rui1, LIN Qing-jia2,XIA Dian-xiu3
(1 Jinan TV station,Jinan 250014; 2 Shandong Education TV Station,Jinan 250014;
3 Jinan Iron and Steel Group,Jinan 250101,China)
Abstract:Based on the MATLAB's fuzzy logic toolboxes,proposes a way to design a fuzzy controller and by using the SIMULINK program to make a simulation of it.It indicates that using the MATLAB's fuzzy toolboxes can make the fuzzy controller's design flexibly,find the best control plan by simulation and shorten design period as well as.
Key words:MATLAB; SIMULINK; fuzzy control; simulation
MATLAB是Mathworks公司推出的一种面向工程和科学运算的交互式计算机软件,自1980年问世以来,已广泛应用于生物医学工程、图象信号处理、信号分析、时间序列分析、控制论和系统论各个领域。

MATLAB软件中提供了自动控制、信号处理、神经网络、模糊处理、小波处理、图象处理等诸多工具箱,功能强大,应用广泛。

SIMULINK是MATLAB中的一个子库,是一个建模、分析各种物理和数学系统的软件,采用框图表示系统的各个环节,用带方向的连线表示各环节的输入输出关系。

SIMULINK中包括7个模型库:信号源库、输出库、离散系统库、线性系统库、非线性系统库及扩展系统库。

1模糊控制器的设计
模糊控制器的设计参数主要有:各输入、输出变量模糊子集的隶属度函数,模糊控制规则,输入输出变量的比例变量因子等。

设计一个好的模糊控制器须进行反复的实验和调试,为此,可预先用SIMULINK进行仿真,以便尽快地掌握模糊控制的特性,缩短设计周期。

实际中大多用MATLAB的模糊逻辑工具箱来设计模糊控制器。

模糊控制器原理见图1。

图1 模糊控制器原理
偏差和偏差变化作为模糊控制器的两个输入量,先对它们进行模糊量化处理,得到模糊变量E和EC,按模糊控制规则进行模糊决策,得到模糊控制量U,再经过解模糊和比例变换得到实际控制量输出。

1.1 隶属度函数的建立
若取E、EC、U的论域均为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},其模糊子集都为{NB,NM,NS,ZO,PS,PM,PB},共有49条模糊控制规则。

在MATLAB中键入FUZZY,进入模糊编辑窗口FIS EDITOR。

建立E、EC、U的隶属度函数,有三角形、高斯形、梯形等11种可供选择,在此选用常用的三角形隶属度函数,如图2所示。

图2 E的隶属度函数
1.2 模糊控制规则及决策方法
控制规则如表1所示。

在Rules Editor窗口中输入这49条控制规则。

例如:If E is NB and EC is PS then U is PM
表1 模糊控制规则
模糊决策一般采用Mamdani's(min-max)决策法。

解模糊有重心法、等分法、最大隶属度平均法等方法可供选择,在此采用重心法。

按此设计的模糊控制器的输入输出曲面如图3所示。

图3 模糊控制器的输入输出曲面
2 SIMULINK仿真及参数的调整
SIMULINK包含多个子模型库,每个子模型库又包括多个功能模块,利用鼠标可直观地“画”出系统模型,然后直接进行仿真。

仿真时可选择各种数值算法、仿真步长等重要参数,并可用模拟示波器将仿真动态结果予以显示。

图4为在SIMULINK环境下,模糊控制一阶滞后被控对象组成的采样控制系统的仿真结构图。

图4 SIMULINK环境下建立的模糊控制系统
若仿真结果不满意,其调整过程如下:
(1)首先调整比例因子K E和K EC,对于微小的差别,通过调整此参数即可解决。

(2)若上述调整不能解决问题,可调整一下K U,在调整K U时,应特别注意系统的稳定性,不可使K U 过大。

(3)通过上述调整,一般都可得到比较满意的仿真结果,若结果还不理想,应重新考虑模糊控制规则和隶属函数的建立,对其进行调整。

3仿真结果
被控对象为G(s)=e-20s/(100s+1),采样周期为5s。

通过仿真可看出一般的模糊控制器相当于非线性的PD控制,无积分作用,有静差,在比例变换因子中K U对系统稳定性影响很大,过大时系统失稳。

图5为系统阶跃输入下被控对象的输出响应曲线。

如把模糊控制器的输出作为控制量的增量输入,就可消除静差。

但这时K U应很小,否则会使系统不稳定。

图6为输出的响应曲线及控制量变化曲线。

图5 输出响应曲线
图6 输出响应曲线及控制量变化曲线
4结语
由上述模糊控制器的设计和仿真过程可以看出,MATLAB的模糊工具箱及SIMULINK有如下特点:(1)可灵活地设计模糊控制器。

在模糊工具箱中能方便地修改输入输出的论域、模糊子集、隶属度函数、模糊控制规则、模糊决策方法及解模糊方案,然后仿真找到较佳的控制方案。

(2)可直接计算出模糊控制表,供单片机进行实际控制时使用。

(3)在SIMULINK环境下,可组成更复杂的控制系统。

如何将MA TLAB中SIMULINK的仿真模块导入FDATOOL中?
先通过to workspace模块保存为.mat文件,再通过file->import data导入。

相关文档
最新文档