本文将会简单介绍函数以及相关的函数知识(例如:nargin,nargchk的作用)
目录
matlab函数介绍
如果M文件的第一个可执行的语句以function开始,则说明该文件是函数文件。函数文件与脚本文件有一个显著的区别脚本文件的变量为命令工作空间变量,在文件执行完成后依旧保留在命令工作空间中。而函数文件内定义的变量为局部变量(可以自行定义全局变量,后面会有介绍),只在文件内部起作用,到函数文件执行完成后,这些局部变量将会被清除。
构成部分
函数定义行
函数定义行又关键字function引导,指明这是一个函数文件,同时要定义函数名、输入参数和输出参数,函数名与文件名相同(必须是合法字符)
函数可以带多个输入参数,如:
function ran=random0(m,n)
函数可以有多个输出参数
function [x,y]=random0(m,n)
也可以没有输出参数,如:
function random0(m,n)
重点注意:(1)函数定义名应和文件保存名一样,如果不一样,MATLAB将会忽视文件首行的函数定义名,而已文件保存名为准。
(2)MATLAB中的函数文件名必须以字母开头,可以实字母、下划线以及数字的任意组合。
函数体
包含用于完成的计算以及给输出参数赋值等工作的语句
接下来我们通过例子来简单介绍函数的相关知识
例子
题目要求:编写函数random0,使其可以接受0、1或2个调用参数。如果没有调用参数,它应该返回一个随机值。如果它有1或2个调用参数,那么它的返回值和当前一样。
直接上代码
function ran = random0(m,n)%design by fb global iseed msg=nargchk(0,2,nargin); error(msg); ran=0; if nargin==0%如果输入没有变量 iseed=mod(8121*iseed+28441,134456); ran=iseed/134456; elseif nargin==1%如果输入有1个变量 ran=m; elseif nargin==2%如果输入有2个变量 ran=[m,n]; end end
输出的效果
全局变量
通常每个函数都有属于自己局部变量,这些局部变量与其他函数的局部变量和基础工作区的局部变量是分开的。如果想使其称为全局变量需要进行声明,通常都是在函数开头位置定义,如:
global iseed
重点注意:如果要在命令行中使用全局变量例如对其进行赋值操作,必须要在命令行窗口将iseed重新声明为全局变量即在命令行窗口再输入1遍
global iseed
nargin
表示一个变量,指定调用指定调用函数所带参数的个数。在本次的代码的主要作用就是获取输入的变量有几个
例子:在命令行输入
nargin的数值就是2,因为有2个输入变量
nargchk(min,max,number)
功能为控制函数的输入函数的个数。参数number是由nargin(这里的number通常直接填nargin)指定的输入参数的个数。如果number的数值超过min到max的区间范围,则系统返回一个错误的字符串
例子:
msg=nargchk(0,2,nargin);
error函数
error函数的主要功能就是抛出错误并显示消息。
例子:
msg=nargchk(0,2,nargin); error(msg);
或者
msg = 'error occurred.'; error(msg)