MATLAB—M函数文件
一.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函数文件的更多相关文章
- matlab初学者_脚本文件调用函数文件
问题: matlab里面有两种文件,一种是脚本文件,一种是函数文件,为了模块化程序,我们需要把专门的功能写成一个函数封装到某个函数文件里面. 那么来看如何在脚本文件里调用函数文件中的函数. 注意点: ...
- Matlab匿名函数,向量化和预分配,函数的函数,P码文件
匿名函数: 匿名函数是不存储在程序文件中.但与数据类型是 function_handle 的变量相关的函数.匿名函数可以接受输入并返回输出,就像标准函数一样.但是,它们可能只包含一个可执行语句. 例如 ...
- MyEclipse调用Matlab打包函数
本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算 ...
- Matlab中函数定义方法
Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...
- matlab 中txt文件(含字符及数值)处理
matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...
- matlab中函数fscanf
matlab中函数fscanf matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size ...
- matlab 子函数的使用
本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...
- matlab读取cvs文件的几种方法
matlab读取CVS文件的几种方法: 1,实用csvread()函数 csvread()函数有三种使用方法: 1.M = csvread('filename')2.M = csvread('fi ...
- Matlab常用函数集锦
ndims(A)返回A的维数size(A)返回A各个维的最大元素个数length(A)返回max(size(A))[m,n]=size(A)如果A是二维数组,返回行数和列数nnz(A)返回A中非0元素 ...
随机推荐
- 远程cmd操作
<<PSTools.zip>><<Install_PowerCmd.exe>><<cmder_mini.zip>><< ...
- etcd中watch源码解读
etcd中watch的源码解析 前言 client端的代码 Watch newWatcherGrpcStream run newWatchClient serveSubstream server端的代 ...
- Centos7下的rabbitmq-server-3.8.11安装配置
推荐大家看看这篇文章:https://blog.csdn.net/qq_27669839/article/details/113418827 下载安装文件 在网上去下载rabbmitmq-3.8.11 ...
- 【LeetCode】203.移除链表元素
203.移除链表元素 知识点:链表:双指针 题目描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例 ...
- IO流之节点流(字符流)和数据流关闭
输入流----Reader 1 public class Reader { 2 public static void main(String[] args) throws Exception { 3 ...
- Java 异步编程的几种方式
前言 异步编程是让程序并发运行的一种手段.它允许多个事情同时发生,当程序调用需要长时间运行的方法时,它不会阻塞当前的执行流程,程序可以继续运行,当方法执行完成时通知给主线程根据需要获取其执行结果或者失 ...
- php 随机生成字符串
private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK ...
- CF466C 题解
Description 给定一个数组,求有多少组 \(i,j\) 将整个数组分成和相等的三个数组. Solution 从左往右看一遍,记录每一个 \(i\) 使得 \(\sum_{k=1}^i a_k ...
- 寄生线虫免疫学研究新路径!华中农业大学胡敏团队报道寄生线虫N-糖基化修饰图谱
N-糖基化修饰是真核生物中一种重要的蛋白质翻译后修饰,在许多生物学过程中起着关键作用,包括蛋白质折叠.受体-配体相互作用.免疫应答和疾病发病机制等.近年来,高精度质谱技术的出现促进了糖组和糖蛋白质组的 ...
- [GXYCTF2019]Ping Ping Ping(ping命令执行绕过Waf)
记一道ping注入的题.过滤了很多字符. 分析 简单的测了一下,很容易就拿到了flag.php和index.php. 但是存在waf无法直接查看.直接?ip=127.0.0.1|cat flag.ph ...