我在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)
答案 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