《MATLAB图像处理超级学习手册》一一2.8 M文件与M函数

简介:

本节书摘来自异步社区出版社《MATLAB图像处理超级学习手册》一书中的第2章,第2.8节,作者:MATLAB技术联盟 , 张岩 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.8 M文件与M函数

MATLAB图像处理超级学习手册
MATLAB输入命令的常用方式有两种:一种是直接在MATLAB的命令窗口中逐条输入MATLAB命令;一种是M文件工作方式。当命令行很简单时,使用逐条输入方式还是比较方便的,但当命令行很多时(比如说几十行甚至成百上千行),显然再使用这种方式输入MATLAB命令,就会显得杂乱无章,不易于把握程序的具体走向,并且给程序的修改和维护带来很大的麻烦。这时,建议采用MATLAB命令的第2种输入形式——M文件工作方式。

M文件工作方式,指的是将要执行的命令全部写在一个文本文件中,这样既能使程序显得简洁明了,又便于对程序进行修改与维护。M文件直接采用MATLAB命令编写,就像在MATLAB的命令窗口直接输入命令一样,因此调试起来十分方便,并且增强了程序的交互性。

M文件与其他文本文件一样,可以在任何文本编辑器中进行编辑、存储、修改和读取。

利用M文件还可以根据自己的需要编写一些函数,这些函数也可以像MATLAB提供的函数一样进行调用。从某种意义上说,这也是对MATLAB的二次开发。

M文件有两种形式,一种是命令方式或称脚本方式,另一种是函数文件形式。两种形式的文件扩展名均是.m。

2.8.1 M文件
当遇到输入命令较多以及要重复输入命令的情况时,利用命令文件就显得很方便了。将所有要执行的命令按顺序放到一个扩展名为.m的文本文件中,每次运行时只需在MATLAB的命令窗口输入M文件的文件名就可以了。MATLAB中M文件的命名规则如下。

(1)文件名命名要用英文字符,第一个字符不能是数字。

(2)文件名不要取为MATLAB的固有函数名,M文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与MATLAB内部函数名同名,结果会出现一些莫名其妙的错误。

(3)文件存储路径一定要为英文

(4)M文件的命名不能为两个单词,如three phase,而应该写成three_phase或者Three Phase。

需要注意的是,M文件最好直接放在MATLAB的默认搜索路径下(一般是MATLAB安装目录的子目录work中),这样就不用设置M文件的路径了,否则应当用路径操作指令path重新设置路径。另外,M文件名不应该与MATLAB的内置函数名以及工具箱中的函数重名,以免发生执行错误命令的现象。

MATLAB对命令文件的执行等价于从命令窗口中顺序执行文件中的所有指令。命令文件可以访问MATLAB工作空间里的任何变量及数据。

命令文件运行过程中产生的所有变量都等价于从MATLAB工作空间中创建这些变量。因此,任何其他命令文件和函数都可以自由地访问这些变量。这些变量一旦产生就会一直保存在内存中,只有对它们重新赋值,它们的原有值才会变化。关机后,这些变量也就全部消失了。另外,在命令窗口中运行clear命令,也可以把这些变量从工作空间中删去。当然,在MATLAB的工作空间窗口中也可以用鼠标选择想要删除的变量,从而将这些变量从工作空间中删除。

接下来,编写一个名为test.m的命令文件,用来计算矩阵1到100的和,并把它放到变量s中。

(1)在MATLAB主菜单中选择菜单命令File→New→script,如图2-2所示。

image

(2)编写代码。在接下来出现的编辑框中输入相应的代码,如图2-3所示。

image

(3)保存。选择编辑框中的菜单命令File→Save,此时会弹出一个保存文件的对话框,将文件名中的Untitled.m改成test,单击“保存”按钮。

(4)M文件的使用。回到MATLAB的主界面,在命令窗口输入如下命令:

>>test
s =
   0
s =
   1
s =
   3
s =
   6
s =
  10
s =
  15
s =
  21
s =
  28
s =
  36
s =
  45
s =
  55

2.8.2 M函数
M函数文件是一个特殊的M文件,其常见格式如下。

Funcdon:表示返问变量列表=函数名(输入变量列表)。

需要说明的是,这里输入变量的个数以及输出变量的个数是由MATLAB本身提供的两个保留变量nargin和nargout给出的,它们分别是NuMber of function input arguMents和NuMber of function output arguMents的缩写形式。

输入变量要用逗号隔开,输出变量多于1个时,要用方括号括起来。用户可以借助于help命令显示其中的注释说明语句段。通过这样的方法就可以建立函数文件或者M函数,其调用方法与MATLAB函数的调用方法相同。

函数文件相当于对MATLAB进行了二次开发。它与其他高级语言子函数的作用基本相同,都是为了实现特定目的而由用户自己编写的子函数。

函数文件与命令文件有着鲜明的区别。

(1)函数文件的第一行必须包含function字符,命令文件无此要求。

(2)函数文件的第一行必须指定函数名、输入参数及输出参数,命令文件无此要求。

(3)一个函数文件可以含0个、1个或多个输入参数和返回值。

(4)函数文件要在文件的开头定义函数名,如function [y1,y2]=func(x,a,b,c),该函数文件名必须存为func.m,而命令文件无此要求。

(5)命令文件的变量在文件执行结束以后仍然保存在内存中而不会丢失,而函数文件的变量仅在函数运行期间有效(除非用global把变量说明成全局变量,否则函数文件中的变量均为局部变量),当函数运行完毕后,这些变量也就消失了。

需要说明的是,调用函数时所用的输入输出变量名并不要求与编写函数文件时所用的输入输出变量名相同。

【例2-25】函数文件的创建以及函数的调用。

(1)执行菜单命令File →New→scrept,弹出一个编辑框。

(2)在编辑框中输入如下代码:

>>function y=func(x)
if abs(x)<1
  y=sqrt(1-x^2);
else
  y=x^2-1;
end

image

(3选择编辑框中的菜单命令File→Save,弹出对话框。注意,不要修改文件名,直接单击“保存”按钮。

(4)调用。在MATLAB的命令窗中输入命令:

>>fplot('func(x)',[-3,2])

运行结果如图2-5所示。
image

相关文章
|
3月前
|
JSON 数据格式 Python
【2023最新】Matlab 保存JSON数据集文件,并用Python读取
本文介绍了如何使用MATLAB生成包含数据和标签的JSON格式数据集文件,并展示了用Python读取该JSON文件作为训练集的方法。
122 1
|
27天前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
27 1
|
28天前
|
存储 机器学习/深度学习 数据可视化
MATLAB脚本与函数
【10月更文挑战第4天】本文介绍了MATLAB脚本与函数的基本概念及编写方法,涵盖脚本和函数的创建、运行及优缺点,通过示例帮助初学者快速上手。同时,文章还涉及数据类型、控制结构、数据可视化、文件操作、错误处理等内容,提供了丰富的示例和学习资源,助力初学者逐步掌握MATLAB编程。
72 3
|
6月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
matlab学习(二)
matlab学习(二)
|
3月前
Matlab批量修改指定文件下文件名
Matlab批量修改指定文件下文件名
169 1
|
3月前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
3月前
|
计算机视觉
【图像处理】基于灰度矩的亚像素边缘检测方法理论及MATLAB实现
基于灰度矩的亚像素边缘检测方法,包括理论基础和MATLAB实现,通过计算图像的灰度矩来精确定位边缘位置,并提供了详细的MATLAB代码和实验结果图。
88 6
|
3月前
|
存储 Serverless
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
|
3月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
47 1
|
3月前
|
计算机视觉
【图像处理】基于Zernike矩的亚像素边缘检测理论及MATLAB实现
基于Zernike矩的亚像素边缘检测理论,并提供了相应的MATLAB代码实现,包括定义7x7的Zernike模板、图像处理、边缘检测和连通域分析等步骤。
106 1

热门文章

最新文章

下一篇
无影云桌面