第九章 MATLAB程序设计(M文件,程序结构与流程控制,函数句柄)

9.1. M文件

实际上,直接在命令行中输入简单的命令无法满足用户的所有需求,matlab提供了另一种工作方程,也就是M文件编程

M文件因其扩展名为.m而得名,是一种标准的文本文件,可以在任何文本编辑器中打开,编辑,存储,修改和读取,M文件的语法是一种程序化的编程语言,又比一般的编程语言简单,程序容易调试,交互性强

9.1.1. 命令文件(脚本文件-Script)

在实际应用中,如果要输入较多的命令,而且需要经常重复输入的时候,就可以利用M文件来实现,需要运行这些命令,那就只需要在命令行窗口中输入M文件的文件名,系统就会自动逐行运行M文件之中的命令,命令行中的语句可以直接访问工作区,而且运行过程中所有的变量均是全局变量,这些变量一旦生成,一直保存在内存之中,用clear命令可以将其清除

M文件可以在任何文本编辑器中编辑,matlab当然也提供了专门的M文件编辑器

M文件中用%对程序进行注释

9.1.2. 函数文件(Function)

函数文件的第一行一般都是以Function开始,是函数文件的标志,函数文件都哦是为了实现某种特定的功能,函数在实际应用中占有重要地位

函数文件与命令文件主要区别:函数文件一般要带有参数,要有返回值,而且函数文件一定要有函数名;命令文件一般不需要带有参数,而且其中的变量执行完之后仍然会保留在内存之中,直到被clear命令清除;而函数文件中的变量仅仅在函数运行期间有效,一旦函数运行结束,其定义的一切变量都会被系统自动清除

举例:分段函数
在这里插入图片描述
在这里插入图片描述

实例:求10的阶乘

在这里插入图片描述
在编写函数文件的时候,要养成写注释的习惯,可以使程序更加清晰,别人更容易看明白,也方便后期维护

利用help命令也可以查到关于函数的一些注释信息
在这里插入图片描述
在这里插入图片描述
在编辑函数文件的时候,matlab允许对函数进行嵌套调用和递归调用,被调用的函数必须是已经存在的

(1)函数的嵌套调用
一个函数文件可以带哦用任意其他函数,被调用的函数还可以调用其他函数
在这里插入图片描述
(2)函数的递归调用
函数的递归调用,也就是调用一个函数的过程当中直接或者间接的调用函数本身
例:利用函数的递归来编写求阶乘的函数
在这里插入图片描述
在这里插入图片描述
M文件的文件名或者M文件的函数名应该避免与MATLAB的内置函数和工具箱中的函数重名,否则可能会在程序执行过程中出现错误,M函数的文件名必须与函数名一致

9.2. MATLAB程序设计

9.2.1. 程序结构

**像一般的程序设计语言一样,MATLAB语言分为三种程序结构:
1)顺序结构
2)循环结构
3)分支结构
但是实际上matlab语言要比实际语言简单的多,而且还具有功能强大的工具箱,就很方便
**

1.顺序结构
程序执行是从上至下执行的
顺序结构我们接触的已经足够多了就不需要多说了

2.循环结构
最常用到的一种程序结构
在循环结构之中,被重复执行的部分就是循环体,常见的有两种循环体:
1)for-end循环;
2)while-end循环;

1)for-end循环
在此种循环之中,一般情况下循环次数是已知的,除非用其他语句提前终止循环。
一般形式如下:
在这里插入图片描述
式通常是形如m:s:n(s通常默认值是1)即变量的取值从m开始,以间隔s递增到n,变量每取一次值,循环便执行一次!!!

2)while-end循环
如果不知道循环的次数,就可以选择这一种循环
一般形式:
在这里插入图片描述

控制语句,一般是由逻辑运算或者关系运算式
如果表达式的值非0,则就要执行一次循环

3.分支结构(选择结构)
MATLAB提供了三种分支结构:
1)if-else-end结构;
2)switch-case-end结构;
3)try-catch-end结构;

1)if-else-end结构;
在这里插入图片描述
(2)switch-case-end语句
一般形式:在这里插入图片描述

实例-成绩评定函数

示例;编定一个成绩评定函数,85~100之间,成绩为优秀,70`84之间,成绩为良好,在60·69之间,评定为及格,60分以下,成绩为不及格
在这里插入图片描述
在这里插入图片描述

9.2.2. 程序的流程控制

在使用MATLAB时,有时可能需要提前终止循环,有时需要显示出错信息,等等,这些特殊要求的实现就会需要流程控制命令:
1)break命令
此命令一般用于终止for循环或者while循环或者if循环,如果条件满足的话将利用break语句将循环终止,在多层嵌套中,break语句只能终结最内层的循环
在多层循环嵌套时,break只能终止最内层循环;

实例:break语句应用实例

在这里插入图片描述
2.pause命令
**该命令用来使程序暂时停止,然后根据用户的设定选择何时继续执行:
在这里插入图片描述

实例:绘制平方曲线

在这里插入图片描述
在这里插入图片描述
continue命令
此命令常用于在循环结构之中,并与if一起使用,作用是结束本次循环,即跳过本次循环后面的其他语句而直接进行是否执行下一次循环的判断。

实例:阶乘运算

在这里插入图片描述

4.return命令
该命令使正在运行的函数正常结束并返回到调用它的函数或者命令行

示例:求两个矩阵之和的程序

在这里插入图片描述
在这里插入图片描述

5.warning命令
该程序用于在程序之中给出必要的警告信息,这在实际中是非常有必要的,在实际中,有一些人为的因素或者其他不可知的因素可能会使某些数据输入有误,
但是不影响程序的继续执行,程序会继续执行,就像什么也没有发生一样
在这里插入图片描述

实例-编写函数

在这里插入图片描述
在这里插入图片描述
6.error命令
该命令显示错误信息,同时返回键盘控制
在这里插入图片描述
五种命令的区别:
1.break:
执行此命令后,程序立即退出最内层的循环,进入外层循环;
2.continue
执行此命令之后,程序立即结束本次循环,即跳过此次循环的其他语句而直接进行下一步是否执行循环的判断;
3.return
该命令可用于任何位置,返回调用函数或者命令行窗口;
4.warning
该命令可以用于任意位置,不影响程序的正常执行,就像什么都没有发生一样
5.error
该命令可用在任何位置,执行后立即终止程序的运行
在这里插入图片描述

9.2.3. 交互式输入:

我们可以通过交互的方式来协调程序的运行,常见的有input命令,keyboard命令,menu命令
1)input命令
一般调用格式:
在这里插入图片描述

示例:赋值输入

编写一个m文件命名为apple.m
在这里插入图片描述
这个地方实际上跟python是一摸一样的

2)keyboard命令
该命令是一个键盘调用命令,即在一个m文件之中执行这一个命令的时候,该文件会停止执行,并将控制权交给键盘,产生一个K开头的提示符,用户通过键盘输入。
在这里插入图片描述
3)menu命令
该命令会产生一个菜单供用户选择:

示例:选择颜色

编写一个名为color.m的m文件

9.2.4. 程序调试

**如果matlab所编的程序运行错误,我们就要对所编的程序进行调试,最常用的的调试方法有两种:
一种是根据程序运行时系统给出的错误信息或者警告信息进行相应的修改,
另一种是通过用户设置断点来对程序进行调试
**

1. 根据系统提示来调试
在这里插入图片描述
在这里插入图片描述
2. 通过设置断点来进行测试

若程序在运行过程中没有出现警告或者是错误信息,但是输出结果与我们所想的相差甚远,这是就需要我们设置断点来进行调试,
所谓断点,是指用来临时中断M文件执行的一个标志,通过中断程序的执行,我们可以观察出一些变量在运行到断点时的值,然后再与所预期的值进行比较,来找出程序的错误

(1)设置断点
在这里插入图片描述
(2)清除断点
在这里插入图片描述
(3) 列出全部断点
在这里插入图片描述
(4)从断点处执行程序
在这里插入图片描述
(5) 断点的调用关系
在这里插入图片描述
(6)进入与退出调试模式
在这里插入图片描述

实例:程序测试

在这里插入图片描述

9.3. 函数句柄

函数句柄是matlab间接调用函数的一种语言结构,可以在函数使用过程中保存函数的相关信息

9.3.1. 函数句柄的创建与显示

函数句柄的创建可以通过特殊符号@引导函数名来实现
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200926091748948.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9i 9nLmNzZG4ubmV0L3dlaXhpbl80NDU2NjY0Mw==,size_16,color_FFFFFF,t_70#pic_center)
在这里插入图片描述

9.3.2. 函数句柄的调用与操作

在这里插入图片描述
使用函数句柄的实例:差值计算
在这里插入图片描述

9.4. 综合实例–比较函数曲线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值