一.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. 传统mvc platform与前后端分离项目smart 共用域名nginx配置

    #server { # listen 80; # server_name 139.129.100.155 rjhaasz.cn; # rewrite ^(.*)$ https://$host$1 pe ...

  2. Redis 高级面试题

    Redis 持久化机制 Redis 是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来 保证数据持久化.当 Redis 重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目 ...

  3. 每日英语——the rest of my life

    <the rest of My life> 词面意思:我的余生 实际意思:我的余生 1.  歌曲:<The Rest of My life> Less Than Jake 歌词 ...

  4. kong配置service和route实现简单API代理

    目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin A ...

  5. VMware中的虚机如何挂载U盘

    1.将U盘插入到宿主机上. 2.在VM Client上,点击宿主机,右键,扫描存储设备(目的是为了发现新USB存储) 3.在需要的虚拟机上编辑配置,添加硬件,添加USB设备(如果不进行以上2个步骤,此 ...

  6. Ubuntu虚拟机基本环境搭建以及参数设置

    # 设置root账户密码 sudo passwd root # 修改源镜像(提高下载更新速度) sudo apt-get update pip install open-vm-tools pip in ...

  7. k8s之deployment详解

    Deployment介绍 为了更好地解决服务编排的问题,k8s在V1.2版本开始,引入了deployment控制器,值得一提的是,这种控制器并不直接管理pod, 而是通过管理replicaset来间接 ...

  8. 家庭账本开发day06

    编写查询页面,学习layUI的动态表格使用,绑定数据源, table.render({            elem: '#currentTableId',            url: '../ ...

  9. Scala学习——简介

    一.Scala简介 Scala 是 Scalable Language 的简写,是一门多范式的编程语言,设计初衷是实现可伸缩的语言并集成面向对象编程和函数式编程的各种特性. 二.Scala 环境搭建 ...

  10. Xshell、winscp连不上Linux虚拟机

    1.环境 本地机器WIN7环境,使用VMware Workstation Pro安装的CentOS7,系统镜像CentOS-6.1-x86_64-netinstall.iso 2.问题与分析 我的虚拟 ...