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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值