一.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. B站挂了之后出现的tengine是个啥?

    一.描述 晚上刚洗漱完之后听同学说:B站挂了?woc?真挂了? 嗯!确实挂了,404的状态码,懂的都懂. 不过,最下面的tengine字眼吸引了我的注意,一时兴起,打算看看它是个什么东西,起码搞一个h ...

  2. kong的管理UI选择-konga

    目录 npm方式安装 1. 准备依赖环境 2. 安装konga 3. 配置 4. 环境变量(more) 5. 数据库 配置 初始化/迁移 6. 运行 Docker方式安装 关于Kong-Dashboa ...

  3. Git submodule 拉取子模块

    $ git clone https://code.Xcode.com.client.git Cloning into 'vipkid-pc-client'... Username for 'https ...

  4. dp 套 dp扯谈

    1.[扯谈概念] \(dp\) 套 \(dp\) 其实也就是 \(dp\) . 这里就定义下面两个概念: 内层 \(dp\) 表示的是被套在里面的那个 \(dp\) 外层 \(dp\) 表示的是最外面 ...

  5. 虚拟局域网VLAN简介

    VLAN 1.根据端口划分VLAN 2.根据MAC地址划分VLAN 3.根据网络层划分VLAN 4. IP组播作为VLAN VLAN优点 1.减少移动和改变的代价 2.虚拟工作组 3.限制广播包 4. ...

  6. win10 sql2008r2网页不能使用数据,需要开启端口1433

    1.打开sql server configuratiton Manager 2.sqlserver网络配置--SQLEXPRESS的协议:都启用 3.双击TCP/IP:选择"IP地址&quo ...

  7. CSS 样式清单整理

    1.文字超出部分显示省略号 单行文本的溢出显示省略号(一定要有宽度) p{ width:200rpx; overflow: hidden; text-overflow:ellipsis; white- ...

  8. 【剑指offer】73.数组中出现次数超过一半的数字

    73.数组中出现次数超过一半的数字 知识点:数组:哈希:占领地思想: 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4 ...

  9. HTML5-CSS(四)

    一.CSS3 渐变效果 (1)CSS3 提供了 linear-gradient 属性实现背景颜色的渐变功能.首先,我们先看一下它的样式表,如下: //两个必须参数background-image: l ...

  10. 正则表达式的模式匹配----V客学院技术分享

    正则表达式是由一个字符序列形成的搜索模式. 你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式可以是一个简单的字符,或一个更复杂的模式. 正则表达式可用于所有文本搜索和文本替换的 ...