文章目录

  • 一.M文件
  • 1.脚本文件和函数文件的区别
  • 二.M函数文件
  • 1.创建方法
  • 2.文件形式
  • 2.函数形参及注释
  • 3.函数的调用
  • 4.函数变量
  • 5.主函数、子函数
  • 三.函数句柄

一.M文件

首先,要了解脚本文件和函数文件的区别,在MATLAB中编写的程序文件称为M文件,M文件分为脚本文件和函数文件俩种。

1.脚本文件和函数文件的区别

脚本文件:没有输入参数和输出参数,运行脚本文件实际上就是顺序执行脚本文件中的控制流,脚本文件适合小规模的运算。脚本文件中的变量都是全局变量。

函数文件:有输入参数和输出参数,由function引导,用户可以自己创建函数、调用函数,就像MATLAB内嵌函数一样使用,函数中的变量一般是局部变量,也可以声明全局变量。函数是MATLAB的主流编程方式。

脚本文件和函数文件的区别如图:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_主函数

二.M函数文件

1.创建方法

脚本文件的创建方法就是,新建一个脚本,在里面编写程序就可以了。
函数文件的创建也是类似的,首先创建一个函数文件,文件名要和函数名一致,然后在文件中编写函数,以function为引导,函数文件中必须包括一个主函数,也可以包含子函数、内嵌函数等等…这和C语言的函数有类似之处。

2.文件形式

函数文件以function为引导,表明这个文件是一个函数文件,格式如下:

function  [ 输出形参 ] = 函数名[ 输入形参 ]
%注释
内容

例如:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_句柄_02


特别注意一点,函数文件名要和主函数的名字一致。

2.函数形参及注释

函数形参
函数文件有输入形参和输出形参,在声明函数的时候就确定了形参的个数,输入形参以圆括号()表示,输出形参以方括号[]表示(注:输出形参为一个的时候可以不用[])。而且每个形参的位置都是对应的,当没有输入参数或者输出参数时,就不用写了,相当于C语言中的void。
另外调用函数的时候,有时需要传入参数和传出参数,参数的位置必须和形参的位置相对应,这点和C语言中的形参使用几乎一样。

注释

当我们调用MATLAB内部函数时,使用help等可以查询函数的使用规则和函数功能,用户编写的函数在注释后也可以通过help进行查询,这样就可以构成函数的在线帮助文本了。

具体的注释规则如图:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_句柄_03

3.函数的调用

写好函数后总要使用的嘛,函数文件自己不可以直接运行,需要用户调用才可以,用户调用的时候格式如下:

[ 输出实参 ] = 函数名( 输入实参 )

注意这里的参数就不同于上面声明函数时的参数,声明函数是形参,调用函数是实参,实参必须要有确定的值。

还有,实参的个数和位置要和形参对应

例如:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_子函数_04

4.函数变量

函数运行的时候会产生一些变量,我们知道,在命令行和脚本文件下产生的变量都是放在主变量工作区的,也就是全局变量。
但是函数内部产生的是局部变量,除非特殊说明为全局变量,局部变量会在函数调用完毕后随函数的结束而清除,当然,也可以通过函数返回值来使变量传出函数,从而保存下来(或者声明为全局变量)。

声明一个变量为全局变量时格式为:

global 变量1 变量2

注意:变量之间必须使用空格来隔开,不能用逗号!

5.主函数、子函数

一般函数文件中第一个函数就是主函数,主函数的函数名也和函数文件名一致。 调用一个函数首先执行的就是主函数了,这一点和C语言中的main函数有相似之处。

对应主函数,在一个函数文件中也会有子函数,子函数可以被主函数调用、被子函数调用。子函数也由function来引导,子函数的调用和位置无关!

例如:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_句柄_05

三.函数句柄

当用户编写了一个函数的时候,要调用此函数时,需要严格按照规定给出函数调用的格式,还要写正确函数名,但是有时候函数名字比较麻烦。而且,最重要的一点:MATLAB每次调用函数的时候都要从所有路径中去寻找对应函数,这就导致程序运行较慢!!!

使用函数句柄可以解决这种问题,什么是函数句柄呢?我们可以类比PC中程序的快捷方式来理解,要启动一个程序,计算机就要从硬盘中找启动程序(感觉有点像大海捞针)只不过计算机运行速度飞快,可以比较快找到,而快捷方式就相当于指定了程序的启动地址,使计算机可以直接去启动程序。
函数句柄也是,使用函数句柄调用函数的时候,速度就比直接调用函数快了,而且使用函数句柄还可以给函数句柄重新命名,对函数句柄的操作就相当于对函数的操作!

定义函数句柄的常用方式就是:

Handle = @FunctionName

直接句柄名=@函数名 就可以,例如:

matlab脚本中包含matlab自带函数能用java调用吗 matlab的函数文件和脚本文件_子函数_06