Matlab - 未定义输入参数

时间:2011-03-21 01:57:15

标签: matlab

我在matlab中有这个非常简单的功能。

function [f]=f1(a, xx)
xx
f = -exp(-a(1)*(xx(1)-1)^2 - a(2)*(xx(2)-1)^2) - exp(-a(1)*(xx(1)+1)^2 -a(2)*(xx(2)+1)^2);

它会打印xx的值,然后抱怨“输入参数”xx“未定义”。 这怎么可能?发生了什么事?

我用feval调用该函数 这是另一个不使用feval的例子。我收到了错误 输入参数“xxx”未定义。请帮助我,我不知道发生了什么事,我被困住了。

我有: function [ans] = f2(xxx) XXX    %f2是1 /(1 + xxx ^ 2),问题2的函数    ans = 1 /(1 + xxx ^ 2); 端

一个文件是neville.m

Q = neville(x,xi,f2) %NEVILLE实现了多项式插值的Neville方法

nplus1 = max(size(xi)); Q =零(nplus1); Q(:,1)= f2(xi);

表示i = 2:nplus1     对于j = 2:i         Q(i,j)=((x-xi(ij))* Q(i,j-1) - (x-x(i))* Q(i-1,j-1))/(x( i) - x(ij));     结束; 端;

另一个文件是neville_driver.m N = 6; aux = [0:6]; xi = -5 + 10 * aux / N;

Q = neville(4,xi,f2)

2 个答案:

答案 0 :(得分:2)

您似乎正在将函数f2传递给neville.m。尝试使用Q=neville(x,xi,@f2);此外,如果xi是向量,则应在操作前使用点(.)使用元素乘法(并将其提升为n次幂),否则会出错。即,1/(1+xxx.^2)

答案 1 :(得分:0)

xx是一个功能吗?因为语法xx(2)是一个函数调用。您的意思是xx*2吗?

编辑:您的第一个示例代码适用于我:

feval(@f1,[2,2],[10,10]);

打印xx,然后打印结果。

Edit2:和f1的代码:

function [f]=f1(a, xx)
xx
f = -exp(-a(1)*(xx(1)-1)^2-a(2)*(xx(2)-1)^2)-exp(-a(1)*(xx(1)+1)^2-a(2)*(xx(2)+1)^2);
end