我正在用 Octave 编写程序,但遇到了一个问题,我实现了 Gauss-Legandre Quadrature,我将几个参数传递给我的 Gauss-Legandre 函数,我传递了要在单元立方体中集成的函数,所以我可以传递几个函数一次。我有这段代码:
for weight=1:length(w)
temp=1;
for fun=1:length(c)
%liczenie iloczynu f(x_i)g(x_i), x_i - pieriwastki wielomianu Legandra
f=c{fun};
nargin(func2str(c{fun}))
if (nargin (func2str(c{fun})) == 1)
disp('a');
temp*=c{fun}((b-a)/2 * x(weight) + (a+b)/2);
else
(b-a)/2 * x(weight) + (a+b)/2;
temp*=f((b-a)/2 * x(weight) + (a+b)/2,I,points);
end
end
%mnozenie wyniku przez odpowiedni wspolczynnik - wage
temp*=w(weight);
result+=temp;
end
在单元格数组中,有我想要集成的函数的函数处理程序。根据函数需要的参数数量,我想对函数使用两个不同的调用。如果在单元格数组中有一个函数的处理程序,该函数写在与我的 Octave 工作目录相同的目录中的 .m 文件中,一切正常,但是当我在 Octave 运行时定义函数时,例如:
function result=a(x)
result=x*x
end
类型
c{1}=@a
并将这个单元格数组传递给我的函数 Kwadratury 存在 nargin 错误
error: nargin: invalid function
error: called from:
为什么会这样,我该如何解决它,所以我不仅可以在 .m 文件中定义函数,还可以在 Octave 中定义函数。