我正在写程序在八度和我遇到了一个问题,我实现了高斯 - Legandre正交和我传递给我的高斯 - Legandre函数几个参数,我传递函数被集成在一个细胞立方体,所以我一次只能传递很少的功能。我有这段代码:Matlab /八度功能处理程序和nargin
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
在单元格数组中有函数处理函数,我想要集成的函数。根据函数的参数数量,我想使用两个不同的函数调用。如果在单元阵列有处理程序是写在.m文件在同一目录作为我的倍频工作目录一切正常,但是当我在八度定义函数运行时间,例如功能:
function result=a(x)
result=x*x
end
键入
c{1}[email protected]
,并通过该电池阵列我的功能Kwadratury有nargin
error: nargin: invalid function
error: called from:
这是为什么,我怎么能解决这个问题,这样我就可以将f的错误不仅在.m文件中,而且在Octave中也是如此。
我开始使用func2str,因为Octave中的nargin只接受一个字符串,但无论如何,我通过让我的单元格还有其他参数来解决我的问题,所以当我知道我的函数接受3个变量时,我只是从c {fun ,2}等,我把所有的函数放在单独的文件中,所以不用担心范围。 – Andna
正如我之前所说的,我通过在自己的文件中包含每个函数来解决我的问题,需要那些内联函数来加速我对自己的代码的测试,但是我没有,但是感谢您的帮助:)。 – Andna