我正在寫程序在八度和我遇到了一個問題,我實現了高斯 - 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