matlab句柄函数使用

概述

  在MATLAB平台中,对函数的调用方法分为直接调用法和间接调用法。

  • 直接调用函数,被调用的函数通常被称为子函数。但是子函数只能被与其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

你可能感兴趣的:(Matlab,matlab,数学建模,开发语言)