许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB入门之程序设计(第五章):脚本与函数编程

MATLAB入门之程序设计(第五章):脚本与函数编程

阅读数 3
点赞 0
article_banner

前言

       经过前面一段时间对MATLAB的学习,了解了MATLAB的运行环境、安装与使用、帮助系统,以及MATALB数组、向量和矩阵的生成与基本运算等,接下来就可以利用MATLAB来进行程序设计了,学习MATLAB程序设计的方法以及注意事项,在一个个小程序设计中提升自我。

       MATLAB程序设计既有传统高级语言的特征,又有自己独特的优点。在MATLAB程序设计中,要充分利用MATLAB数据结构的特点,可以使程序结构简单,编程效率高,提升我们的工作效率!


一、M文件

1.1、M文件概述

       M文件即利用MATLAB编写的程序文件,M文件是由若干个MATLAB命令组合在一起构成的,它可以完成某些特定的操作,也可以实现某种 算法  。M文件不仅可以完成编写的功能及算法,也可以调用MATLAB内封装完成的工具箱,来达到程序设计的目的。

在MATLAB程序设计中,M文件通常可以分为命令文件和函数文件: ① 命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可以返回输出参数; ② 命令文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕后,这些变量也将被清除; ③ 命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式运行。

1.2、M文件的建立与打开

       M文件就相当于一个文本文件,它不仅可以在MATLAB上编辑,也可以使用其他编辑器进行编辑修改,但是这里个人建议还是使用MATLAB自带的文本编辑器,这样对我们学习使用MATLAB也更有益处。

在MATLAB中,建立M文件有两种方法: ① 通过MATLAB左上角的菜单栏进行操作,点击新建脚本文件,屏幕上就会出现MATLAB的文本编辑器窗口,在该窗口输入我们的程序内容,点击保存,保存文件的后缀名是.m的文件,这就表示一个M文件建立完成; ② 通过命令建立M文件,在MATLAB命令行窗口输入edit命令,即可产生MATLAB的文本编辑器窗口,保存过后后缀为.m的文件即可;
M文件的打开也有三种方式: ① 通过菜单操作打开M文件,从MATLAB主窗口的菜单中找到Open命令,在屏幕弹出的对话框中找到需要打开的M文件即可; ② 通过命令打开M文件,在MATLAB的命令行窗口输入命令edit 文件名,即可打开所需M文件; ③ 将MATLAB路径定位到M文件保存的路径下,点击当前文件夹下需要打开的M文件,此时M文件就会出现在文本编辑器当中。

二、程序控制结构

       在MATLAB程序设计中,共有3中程序控制结构,无论再复杂的程序都可以由这3种基本的结构构成,这3种程序控制结构就是顺序结构、选择结构和 循环结构

2.1、顺序控制结构

       顾名思义,顺序结构就是按照程序中的语句排列顺序依次执行,直到程序的最后一个语句。这是最简单的一种控制结构,一般会涉及到数据的输入、数据的计算处理以及数据输出等内容。

① 数据的输入:在MATLAB中,数据的输入可以用input函数来进行,该函数的调用格式为: input(提示信号,选项); 这里的提示信息为一个字符串,目的是为了提示用户输入什么样的数据信息,如请输入一个3行3列的矩阵等等;选项则是用户输入的信息,允许用户输入一个字符串,例如3行3列的矩阵。 ② 数据的处理:数据的处理即数组、向量或者矩阵的变换、基本的数学运算等。 ③ 数据的输出:在MATLAB中,数据的输出函数有disp和fprintf两种,这两种函数的格式为: disp(输出项); fprintf('输出形式‘,输出项); 对于disp函数来说,输出项可以为字符串,也可以是矩阵。对于fprintf函数来说,输出形式有%f(浮点数)、%d(科学计数法)、%c(字符串)等。

        上图这个例子就很好地说明了我们的数据输入、数据处理以及数据输出的内容,根据上面的例子,输入函数input赋值给圆的半径radius,然后根据圆的面积公式进行数据处理,计算除圆的面积,然后再用disp和fprintf函数对计算结果进行输出。当运行该程序时, 命令行  窗口会提示你输入圆的半径信息,我这里输入的半径是5,回车后就会输出圆的面积数据,这里是用两个函数都返回了圆的面积数据。

2.2、选择结构

       选择结构是根据给定的条件是否满足为依据的,分别执行不同的语句。MATLAB中用于实现选择控制语句的有if语句、switch语句。

① if语句:if语句是一个条件分支语句,若满足表达式的条件,则往下继续执行;若不满足条件,则跳出if结构。else if表达式与else为可选项,这两条语句可根据具体情况有所取舍。另外要注意的是每一个if都对应一个end,即有几个if,就要有几个end。 if语句语法: if 表达式 1 语句 1 else if 表达式 2 语句 2 else 语句 3 end end ② switch语句:switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式 1 语句 1 case 表达式 2 语句 2 ...... case 表达式 m 语句 m otherwise 语句 n end switch语句的执行过程如上所示,当表达式的值等于表达式1的值时,执行语句1,当表达式的值等于表达式2的值时,执行语句2,以此类推;如果表达式的值不等于任何一个case的值时,则执行otherwise后面的语句n,跳出switch语句。

       如上图是利用switch语句选择商品售价范围,这时我们兜里只有500元,当商品售价低于200元时,返回0,说明我们买起来不心疼;当商品售价在200到500元时,返回1,买起来肉疼;当商品售价大于500元时,返回无穷大,买不起,根本买不起啊!这就好理解多了噻!

2.3、循环结构

       循环结构是指按照给定的条件,当条件一直满足时,重复执行指定的语句,当条件不满足时,跳出该循环结构。MATLAB提供了两种实现循环结构的语句,即for循环语句和while循环语句。

① for循环语句:for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初始值,表达式2为步长(当步长为1时,表达式2可以省略),表达式3为循环变量的终值;for循环语句的执行过程是首先计算3个表达式的值,再将表达式1的值赋值给循环变量,如果此时循环变量的值介于表达式1和表达式3之间,则执行循环体语句,否则结束循环的执行。 ② while语句:while语句的格式为: while(条件) 循环体语句 end 其执行过程为,若条件成立,则执行循环体语句,执行后再继续判断条件是否成立,如果仍然成立,则继续循环,如果不成立,则跳出循环。 ③ break语句和continue语句:这两个语句也是与循环密切相关的语句,它们一般都是与if语句配合使用。break语句用于终止循环的执行,continue语句控制跳过循环体中的某些语句。 ④ 循环的嵌套:如果一个循环结构中有包含另一个循环结构时,就叫做循环的嵌套。在循环的嵌套结构中,仍然可以应用前面介绍的3种循环语句,在设计多重循环嵌套结构时,要特别注意内、外循环之间的关系,以及各种语句放置的位置,否则会使设计出来的循环结构发生错误!

       啥也别说了,直接上例子吧!!!

三、函数文件

       函数文件是另一种形式的M文件,每一个函数文件都定义一个函数,实际上MATLAB中提供的标准函数大部分都是由函数文件定义的。

3.1、函数文件

函数文件的基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数主体语句

       函数文件都是由function语句引导,函数文件名通常由函数名再加上拓展名.m组成,函数名的命名规则与变量名相同。函数文件名与函数名可以不相同,当两者不相同时,MATLAB会忽略函数名而直接调用函数文件名,为了避免发生错误,最好将函数名和函数文件名统一。

3.2、函数调用

       函数文件编制好后,就可以调用其函数进行计算了。

函数调用的一般格式为: [输出实参表] = 函数名(输入实参表)

       函数调用需要注意的是,在调用时各实参出现的顺序、个数要与函数定义时形参的顺序、个数对齐,否则会出现错误。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。并且在MATLAB中,函数可以实现嵌套调用,即一个函数可以调用其他函数,也可以实现自身调用,这叫做递归函数。

3.3、全局变量和局部变量

       在MATLAB中,函数文件中的变量是局部的,与其他函数文件及MATLAB工作空间相互隔离,即在一个函数文件中定义的变量不能被另一个函数文件引用。如果在若干个函数中,都把某一个变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用范围是整个MATLAB工作空间,所有的函数都可以对它进行存取和修改。

全局变量定义格式为: global 变量名

       值得注意的是,全局变量虽然可以很方便的使用,但对我们程序的可读性产生了一些影响,破坏了函数对变量的封装。所以还是最好少使用全局变量吧,实在要用,取一个见名知意的名字较好,以免混淆!


总结

       今天学习了利用MATLAB来进行程序设计,把程序设计的流程以及设计方法都理论性地学习了一遍,下一次就用几个例题来巩固前面所学的内容了,这样才能加深印象嘛!


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空