matlab 函数句柄使用问题

function [a b]=func1(x,sigma)
a=x^2+sigma;
b=2*x+sigma;

function test(func,x)
sigma=1
f=@(x) func(x,sigma);
[a b]=f(x);

输入test(@func1,2)
为甚么会出错?

直接f=@(x) func1(x,sigma);
[a b]=f(x);
就没有问题。
求解释以及解决方法,谢谢了!

第1个回答  推荐于2016-06-21
1.两个函数要存放在两个文件中
func1存在func1.m中
test存在test.m中
Matlab的函数寻址是在工作路径下查找与函数名相同的文件.
如果将两个函数
function [a b]=func1(x,sigma)
a=x^2+sigma;
b=2*x+sigma;

function test(func,x)
sigma=1
f=@(x) func(x,sigma);
[a b]=f(x);
放在一个文件中,如果不命名成test.m,那么则无法寻址到test这个函数;如果命名为test.m,那么func1被作为test函数来调用,内部定义的test函数被认为是重复定义的函数,不会被调用.
2.调用test(@func1,2)的时候前括号用的中文括号,应改成英文的.本回答被提问者采纳
第2个回答  2010-06-22
你问题还不清晰哦。
function test(func,x)
这个函数定义得连输出都没
还有,你第一个函数定义的名字叫func1,后面要调用的话,也要用func1而不是用func
相似回答