【发布时间】:2020-04-18 19:59:51
【问题描述】:
函数句柄可用于调用函数,例如
f = @sin;
val = f(1.0);
那么为什么需要feval?
val = feval(f, 1.0);
什么时候有用?
【问题讨论】:
-
我发现它使代码更易于阅读,因为括号用于索引和函数调用。使用
feval可以清楚地说明我们在做什么。
函数句柄可用于调用函数,例如
f = @sin;
val = f(1.0);
那么为什么需要feval?
val = feval(f, 1.0);
什么时候有用?
【问题讨论】:
feval 可以清楚地说明我们在做什么。
对于feval,第一个参数可以是带引号的字符串,比函数句柄更灵活。你可以做一些事情,比如在fn1、fn2、fn3中使用一个基本名称后跟一个索引的函数,然后使用feval(['fn', num2str(k)], x, y, z);动态调用这些函数。
【讨论】:
eval 方法到“受控”替代方法的转变,例如 @function 句柄。换句话说,上面的构造很容易用@function句柄实现,但仍可能在遗留代码或习惯中使用。
fn,它将索引作为额外的输入。 “为什么需要feval”的答案应该是:“它是需要的,但现在应该使用括号来评估函数句柄。”
直到第 14 版 (MATLAB 7),feval 是评估函数句柄的方式...或在函数由其指定时评估函数名字。
【讨论】:
feval了。
不一定总是知道应该使用什么功能;例子很多
这是一个愚蠢的例子:让,在每个数字后面的文本文件中,可以评估为数学函数的不同单词,例如,均值,最小值,最大值,平方表示,并且任务是计算之后的结果每个喜欢,
2,square,2,power,4,log,10 ...
你想写一个程序来遍历这个文本并计算最终结果......
另一个例子是,例如,我想用用户输入函数句柄 f 定义一个绘图函数,所以它必须以某种灵活的方式......
pfun=@(f,x) plot(f(x))
【讨论】: