主要内容

str2func

从特征向量构造函数处理

描述

例子

跳频= str2func (str)构造一个函数处理,跳频,从一个匿名函数的函数名或文本表示。

函数处理使用str2func没有访问变量之外的本地工作区或嵌套的函数。如果你的函数处理包含这些变量或函数,MATLAB®当你调用处理抛出一个错误。同样的,如果你使用一个匿名函数的文本表示,由此产生的函数处理没有获得私人或本地函数。

例子

全部折叠

把特征向量“的”一个函数处理,调用使用处理函数。

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

一个特征向量代表一个匿名函数转换为一个处理函数。工作空间变量并不可用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 =兰迪(~ ~)r = 1;结束

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

(p1, p2) = diceRoll
p1与价值= function_handle: @ randi () ((1,6), 1) p2与价值= function_handle: @ randi () ((1,6), 1)

这两个p1p2似乎与相同的匿名函数。

调用函数处理。结果从p1从1到6不等。结果从p2总是1。

p1 () p2 ()
= 5岁= 1

输入参数

全部折叠

文本转换为一个处理函数,指定为一个函数的名称或一个特征矢量或字符串标量表示一个匿名函数。

例子:str = '因为'

例子:str =“@ (x) x ^ 2》。

提示

  • 一个函数处理存储变量值不使用时保持其原始值func2str将它转换成一个特征向量,然后将其转换回处理str2func

扩展功能

版本历史

之前介绍过的R2006a

另请参阅

|