gpt4 book ai didi

function - 如果不使用引号 '' 将一个函数作为参数传递给另一个函数将无法编译?

转载 作者:行者123 更新时间:2023-12-02 22:38:04 27 4
gpt4 key购买 nike

当我将一个函数(我们称它为 f)传递到我的 Base 函数时,Base 函数无法识别f 函数,不使用 '' 引号,代码如下:

function y = test(a, b, n ,f)

if ( rem(n,2) ~= 0 )
error ( 'n is not even' )
end

% create a vector of n+1 linearly spaced numbers from a to b
x = linspace ( a, b, n+1 );

for i = 1:n+1
% store each result at index "i" in X vector
X(i) = feval ( f, x(i) );
end
y=sum(X);
end

这是 f.m :

function [y] = f (x)
y = 6-6*x^5;

当我从带引号的命令行运行时:

>> [y] = test(0,1,10,'f')

y =

52.7505

但是当我删除它们时:

>> [y] = test(0,1,10,f)
Error using f (line 2)
Not enough input arguments.

我的错误在哪里?为什么我不能执行 [y] = test(0,1,10,f)

谢谢

最佳答案

函数feval期望函数名称(即字符串)或函数句柄作为输入。在您的代码中,f 既不是名称也不是句柄。在调用基函数 test 时,使用字符串 'f' 或句柄 @f

如果如评论中所述,在对基函数的调用中每次赋值都不允许使用函数句柄,您仍然可以使用函数句柄创建一个带有函数名称的字符串。此功能由函数 func2str 提供:

functionName = func2str(@f); 

test(0,1,10,functionname);

关于function - 如果不使用引号 '' 将一个函数作为参数传递给另一个函数将无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com