一.M文件

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

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

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

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

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

二.M函数文件

1.创建方法

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

2.文件形式

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

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

例如:

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

2.函数形参及注释

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

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

3.函数的调用

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

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

注意这里的参数就不同于上面声明函数时的参数,声明函数是形参,调用函数是实参,实参必须要有确定的值。
还有,实参的个数和位置要和形参对应
例如:

4.函数变量

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

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

global 变量1 变量2

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

5.主函数、子函数

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

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

三.函数句柄

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

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

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

Handle = @FunctionName

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

MATLAB—M函数文件的更多相关文章

  1. matlab初学者_脚本文件调用函数文件

    问题: matlab里面有两种文件,一种是脚本文件,一种是函数文件,为了模块化程序,我们需要把专门的功能写成一个函数封装到某个函数文件里面. 那么来看如何在脚本文件里调用函数文件中的函数. 注意点: ...

  2. Matlab匿名函数,向量化和预分配,函数的函数,P码文件

    匿名函数: 匿名函数是不存储在程序文件中.但与数据类型是 function_handle 的变量相关的函数.匿名函数可以接受输入并返回输出,就像标准函数一样.但是,它们可能只包含一个可执行语句. 例如 ...

  3. MyEclipse调用Matlab打包函数

    本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算 ...

  4. Matlab中函数定义方法

    Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...

  5. matlab 中txt文件(含字符及数值)处理

    matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...

  6. matlab中函数fscanf

    matlab中函数fscanf matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size ...

  7. matlab 子函数的使用

    本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...

  8. matlab读取cvs文件的几种方法

    matlab读取CVS文件的几种方法: 1,实用csvread()函数   csvread()函数有三种使用方法: 1.M = csvread('filename')2.M = csvread('fi ...

  9. Matlab常用函数集锦

    ndims(A)返回A的维数size(A)返回A各个维的最大元素个数length(A)返回max(size(A))[m,n]=size(A)如果A是二维数组,返回行数和列数nnz(A)返回A中非0元素 ...

随机推荐

  1. 26 bash shell中的信号

    当没有任何捕获时,一个交互式 Bash Shell 会忽略 SIGTERM(发送到进程的 TERM 信号用于要求进程终止) 和 SIGQUIT(当用户要求进程执行 core dump 时,QUIT 信 ...

  2. 17 shell break与continue

    使用 while.until.for.select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字. 在C语言.Python.Ja ...

  3. Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

    我的情况是:在applicationContext.xml文件中配置 <bean id="member" class="com.entity.Member" ...

  4. 确保 PHP 应用程序的安全 -- 不能违反的四条安全规则(转)

      规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数 ...

  5. Formily教程 | formily是中后台复杂场景的表单解决方案

    前言 formily 不是一个简单的前端轮子.Formily 是一个由阿里巴巴集团多 BU 共建的面向中后台复杂场景的表单解决方案,它也是一个表单框架.它的前身是供应链平台在 2019 年初对外开源的 ...

  6. Ionic命令笔记

    Ionic命令:ionic serve 开启服务调试ionic cordova prepare android 生成android原生项目 ionic cordova run browser 打包成混 ...

  7. Github Copilot 结合python的使用

    之前提交的github copilot技术预览版申请,今天收到准入邮件,于是安上试一试这个准备把我送去电子厂上班的copy a lot ? 官网及申请地址:https://copilot.github ...

  8. 打造一个window桌面应用:在线聊天对话机器人

    大家好,我是辰哥~~~ 本文目标:打造一个window桌面应用:在线聊天对话机器人. 今天辰哥教大家做一个在线聊天对话机器人桌面应用,已经打包成exe可执行文件,读者可以直接拿来使用, 先上演示图 聊 ...

  9. File类与常用IO流第一章File类

    第一章:File类 一.1个重点单词: file:文件:directory:文件夹/目录:path:路径(绝对路径:absolutePath) 二.4个静态成员变量: 1.static String ...

  10. HDFS学习总结之安装

    HDFS linux安装总结(基于hadoop-2.6.0-cdh5.7.0 伪分部安装) 1.jdk安装 1) 直接下载jdk包放到安装目录即可(jdk-8u131-linux-x64.tar.gz ...