概述
在MATLAB平台中,对函数的调用方法分为直接调用法和间接调用法。文章来源地址https://www.toymoban.com/news/detail-577070.html
- 直接调用函数,被调用的函数通常被称为子函数。但是子函数只能被与其M文件同名的主函数或在M文件中的其他函数所调用,一个文件中只能有一个主函数。
>> str = 'hello world';
>> size(str)
ans =
1 11
- 使用函数句柄对函数进行调用可以避免上述问题。函数句柄提供了一种间接调用函数的方法。创建函数句柄需要用到操作符@。对MATLAB库函数中提供的各种M文件中的函数和使用者自主编写的程序中的内部函数,都可以创建函数句柄,从而可以通过函数句柄来实现对这些函数的间接调用。
>> str
str =
'hello world'
>> size_hanlde = @size
size_hanlde =
包含以下值的 function_handle:
@size
>> size_hanlde(str)
ans =
1 11
一些关于句柄的函数
函数名称 | 函数功能说明 |
---|---|
functions(funhandle) | 返回一个结构体,存储了函数的名称、函数类型(simple 或 overloaded),以及函数 M 文件的位置 |
func2str(funhandle) | 将函数句柄转换为函数名称字符串 |
str2func(str) | 将字符串代表的函数转换为函数句柄 |
save filename.mat funhandle | 将函数句柄保存在*.mmat 文件中 |
load filename.mat funhandle | 把*.mat 文件中存储的函数句柄加载到工作区 |
isa( var,‘function_handle’) | 检测变量var 是否是函数句柄 |
isequal(funhandlea, funhandleb) | 检测两个函数句柄是否对应同一个函数 |
>> a=@sin
a =
包含以下值的 function_handle:
@sin
>> b=@cos
b =
包含以下值的 function_handle:
@cos
functions(funhandle)
>> functions(a)
ans =
包含以下字段的 struct:
function: 'sin'
type: 'simple'
file: ''
func2str(funhandle)
>> func2str(a)
ans =
'sin'
str2func(str)
>> c=str2func("sin")
c =
包含以下值的 function_handle:
@sin
isa( var,‘function_handle’)
>> isa(a,'function_handle')
ans =
logical
1
isequal(funhandlea, funhandleb)
>> isequal(a,b)
ans =
logical
0
>> isequal(a,c)
ans =
logical
1
文章来源:https://www.toymoban.com/news/detail-577070.html
到了这里,关于matlab句柄函数使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!