一、m文件定义函数(m-函数)
- Matlab函数的基本结构
function[输出形参表: output1, ...,outptn] = 函数名(输入形参表: input1, ... , inputn)
注释说明部分
函数体代码部分
end
说明:function:表示编写的是一个函数;
输出形参表,即函数的返回值,各返回值间用逗号隔开;(不需要像C语言那样,通过return到返回值来赋值,outp_args相应的参数可以直接使用)
函数名:需要和m文件名保持一致
输入形参列表:即函数的各输入参数,用逗号隔开;
函数体:完成函数的具体功能,是根据具体需要编写的;通过使用“函数的输入参数”、“自定义变量”、“流程控制结构”来实现;
end:表示此函数结束,也可省略。
- 函数调用
定义完的函数保存为同函数名的m文件,放置在Matlab的当前路径之下(或修改当前路径为m-函数文件所在路径),然后就和使用Matlab自带的函数一样,直接在命令窗口或程序代码中使用该函数就是调用它了。调用函数时,只需要知道函数是完成什么功能的,以及它的输入参数、输出参数。
函数调用的一般格式为:
[输出实参表]=函数名(输入实参表)
注1:函数中遇return语句时,将退出函数体,此函数调用结束;
注2:函数体里面也可以定义一个或几个函数,称为子函数;注意:子函数只能存在于主函数体内,不独立存在;子函数在主函数体内的位置可以任意,不影响使用;子函数只能被主函数以及其他位于同一主函数体下的子函数调用,但子函数“句柄”例外;
注3:在调用函数时,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
例1 函数(子函数)定义与调用示例,求向量的最大、最小值。
编写m-函数文件:max_min_values.m
function [max,min] = max_min_values(X)
%输入参数X为数值向量,返回其最大值和最小值
max=mysubfun1(X);
min=mysubfun2(X);
function r=mysubfun1(X) %子函数1
x1=sort(X, 'descend');
r=x1(1);
end
function r=mysubfun2(X) %子函数2
x1=sort(X);
r=x1(1);
end
end
调用函数(命令窗口):
A = [34,56,23,11,2,39];
[m,n]=max_min_values(A)
运行结果: m = 56
n = 2
1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件
例:自定义求和函数
需要自定义一个 my_sum.m 的文件来存放函数
function[s]=my_sum(n)
s=0;
for
i=1:n
s=s+i;
end
注意:函数名(my_sum)必须与文件名(my_sum.m)一致
调用函数的时候函数文件放在当前工作目录下面。
2、函数文件+子函数:定义一个具有多个子函数的M文件
例:求最大值函数
function son_function( ) %主函数必须位于最上方
%子函数举例
max1=find_max(1,2,3)
max2=find_max(7,3,9)
function max=find_max(a,b,c) %子函数
if (a>=b)&(a>=c)
max=a;
elseif (b>=a)&(b>=c)
max=b;
else
max=c;
end
注意:一个m文件可以写多个function,但是只有第一个能够在其他文件中调用,其余的函数只能在该文件中调用。
函数名要与主函数名一致