首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果不使用引号'‘,将一个函数作为参数传递给另一个函数将无法编译?

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

Stack Overflow用户
提问于 2012-06-22 17:27:42
回答 2查看 1.9K关注 0票数 2

当我将一个函数(我们称它为f)传递给我的基本函数时,基本函数不能识别f函数,不使用''引号,以下是代码:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
function [y] = f (x)
y = 6-6*x^5;

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

代码语言:javascript
运行
复制
>> [y] = test(0,1,10,'f')

y =

   52.7505

但当我移除它们时:

代码语言:javascript
运行
复制
>> [y] = test(0,1,10,f)
Error using f (line 2)
Not enough input arguments.

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-22 17:36:25

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

如果如注释中所述,在基函数调用中不允许每次赋值都使用函数句柄,则仍然可以使用函数句柄来创建具有函数名称的字符串。此功能由函数func2str提供

代码语言:javascript
运行
复制
functionName = func2str(@f); 

test(0,1,10,functionname);
票数 3
EN

Stack Overflow用户

发布于 2012-06-22 17:40:46

尝试将@f而不是'f'作为参数传递,并将该行更改为

代码语言:javascript
运行
复制
X(i) = f(x(i));

问题是f并不是一个函数句柄。在这种情况下,也不需要使用feval

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11153565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档