需求
我们有一个字符串A,而A实际是一个函数名或类名,我们想要执行函数A(),或新建一个A对象。
what
[y1,...,yN] = feval(fun,x1,...,xM)
fun为函数名或句柄,X1……XM为该函数的参数,y1……yN为该函数的返回值。feval执行该函数,返回结果。
code
- 执行函数
>> A='round';
>> feval(A,pi)
ans =
3
- 执行类,新建对象
qubit.m
classdef qubit
properties
type;
end
end
>> B='qubit';
>> res=feval(B)
res =
qubit (具有属性):
type: []
扩展
还有其他的方法来满足这个需求?如下:利用str2func()
fh = str2func(c)
str2func将字符串c转换为函数句柄。比如上面的两例:
>> A='round';
>> r=str2func(A)
r =
包含以下值的 function_handle:
@round
>> r(pi)
ans =
3
>> B='qubit';
>> r=str2func(B)
r =
包含以下值的 function_handle:
@qubit
>> r()
ans =
qubit (具有属性):
type: []