我遇到了一個問題,調用下面的代碼中定義的函數。根據Matlab,我沒有足夠的輸入參數在嵌套函數池,當我使用功能通過輸入「Awesomefit(V,I,Ierr)」。然而,我無法真正解釋爲什麼,因爲應該提供函數需要的所有輸入。V,I和Ierr是148x1 double的矩陣,並在調用函數之前得到初始化。無法找到爲什麼錯誤「沒有足夠的輸入參數」,Matlab
有沒有人有一個想法可能會失蹤?
Matlab還在fminsearch中顯示了一條錯誤消息。我不知道這是否與其他錯誤信息有關或錯誤地使用「fminsearch」命令。現在我認爲這是後一種可能性。但這絕對不是我的主要問題。我希望一旦我解決了另一個問題,我就可以應對。
請原諒我的非正統的編程風格,但我想程序的物理學家:/我仍然給我最好的,但..
%% do stuff
function a = Awesomefit(V,I,Ierr)
% initialize starting values
A = 1;
Vbd = 25;
n = 1.2;
b = -0.01;
Var = [Vbd n b];
%do stuff
a = fminsearch(Chi,Var);
function Ifit = InotNorm(V,Vbd,n,b)
Ifit = zeros(size(V));
for i = 1:length(V)
if V(i) < Vbd,
Ifit(i) = 2*10^-12;
else
Ifit(i) = A * abs((V(i)-Vbd)/(V(i)-Vbd+1/(n*b)))^n;
end
end
end
function NM = NormMod(Vbd,n,b)
NM = sum(InotNorm(V,Vbd,n,b) ./ Ierr);
end
function ND = NormDat(I,Ierr)
ND = sum(I ./ Ierr);
end
function C = Chi(Vbd,n,b)
C = sum(((InotNorm(V,Vbd,n,b) .* NormDat(I,Ierr) ./ NormMod(Vbd,n,b) - I) ./ Ierr).^2);
end
end
感謝很多:)這實際上做的伎倆。 – MSergio
@ MSergio - 完全沒問題。祝你好運! – rayryeng