文档

str2func

用字符向量构造函数句柄

语法

跳频= str2func (str)

描述

例子

跳频= str2func (str构造一个函数句柄,跳频,从函数名或匿名函数的文本表示形式。

创建的函数句柄str2func不要访问本地工作区之外的变量或嵌套函数。如果你的函数句柄包含这些变量或函数,MATLAB®在调用句柄时抛出错误。此外,如果使用匿名函数的文本表示,则生成的函数句柄不能访问私有函数或本地函数。

例子

全部折叠

转换字符向量“的”函数句柄,并调用函数使用句柄。

c =“的”;跳频= str2func (c)
跳频=function_handle与价值:@ones
跳频(1、5)
ans =111 111 111

将表示匿名函数的字符向量转换为函数句柄。的工作空间变量不可用str2func函数。因此,在字符向量中包含对表达式求值所必需的值,并且这些值不是定义为函数输入的。

定义一个表示匿名函数的字符向量7x- 13.将字符向量转换为函数句柄。

str =“@ (x) 7 * x-13”;跳频= str2func (str)
跳频= @ (x) 7 * x-13

使用句柄调用匿名函数。

跳频(3)
ans = 8

如果你在你的字符向量中包含工作空间变量,str2func创建函数句柄,但是当你调用函数句柄时,MATLAB会抛出一个错误。

一个= 13;str =“@ x (x) 7 *”;跳频= str2func (str);跳频(3)
未定义的函数或变量a。@ x (x) 7 *误差

创建一个函数,该函数返回两个函数句柄,用于模拟掷骰子。第一个骰子(d1)返回从1到6的数字,但第二个骰子(d2)总是返回数字1。

在MATLAB路径的文件夹中创建以下函数。当str2func与表示匿名函数的字符向量一起使用时,它无法访问局部函数。因此,MATLAB调用内置的兰迪函数,并返回从1到6的数字。的eval函数可以访问本地函数,所以d2使用重载兰迪总是返回1。

函数[d1,d2] = diceRoll str =' @()兰迪([1 - 6],1)”;d1 = str2func (str);d2 = eval (str);结束函数R = randi(~,~) R = 1;结束

在命令提示符下,调用diceRoll函数。

(p1, p2) = diceRoll
P1 = function_handle with value: @()randi([1,6],1)

这两个p1p2似乎与同一个匿名函数相关联。

调用函数句柄。结果从p1从1到6。结果从p2总是1。

p1 () p2 ()
Ans = 5 Ans = 1

输入参数

全部折叠

要转换为函数句柄的文本,该句柄指定为匿名函数的函数名或字符向量或字符串标量表示。

例子:str = '因为'

例子:STR = '@(x) x.^2'

提示

  • 存储变量值的函数句柄在使用时不会保留其原始值func2str将其转换为一个字符向量,然后将其转换回一个句柄str2func

扩展功能

另请参阅

|

之前介绍过的R2006a

这个话题有用吗?