在MATLAB中,函数调用分为直接调用与间接调用
一、直接调用
被调用的函数通常被称为子函数,子函数只能与M文件同名的主函数或被M文件中的其他函数调用,同时在一个文件中只能有一个主函数。
二、间接调用
1、函数句柄提供了一种间接调用的方法,避免了直接调用函数的缺陷。对MATLAB库函数中提供的各种M文件中的函数和用户自己编写的程序中的内部函数都可以通过创建函数句柄实现这些函数的间接调用。创建函数句柄需要使用操作符@。
2、函数句柄的创建与调用
(1)无输入参数的函数
F_Hundle=@sin
创建了一个函数句柄,其中sin函数MATLAB内部函数的名称;@是创建函数句柄的操作符;F_Hundle是变量,用于保存这一函数句柄。
例如在MATLAB R2016a中命令行中输入
F1=@sin
输出结果为:
F1=
@sin
用F1可实现对sin 函数的调用,例如下图
(2)有输入参数的函数
例如在命令行中输入如下代码(此处F1用于调用上述sin函数):
>> Fd(x,y)
>> m=0.05*pi:1/1000*pi:2*pi;
>> n=F1(m);
>> Fd=@plot;
>> Fd(m,n)
运行结果如下:
(3)句柄操作函数
函数名称 | |
functions(funhandle) | 返回一个结构体,该结构体存储函数的名称、类型(simple或overload),以及函数M文件的位置 |
func2str(funhandle) | 将函数句柄转换为函数名称字符串 |
str2func(str) | 将字符串代表的函数转换为函数句柄 |
save filename.mat funhandle | 将函数句柄 保存在*.mat文件中 |
load filename.mat funhandle | 把*.mat文件中存储的函数句柄加载到工作区 |
isa(var, 'function_handle') | 判断变量var是否是函数句柄 |
isequal(funhandlea, funhandleb) | 判断两个函数句柄是否对应于同一个函数 |