2014-09-05 72 views
0

我是MatLab的新手,我正在嘗試編寫一個簡單的閃存計算代碼,但是我收到了上述錯誤。我想知道你能否幫助我。我不確定錯誤在問什麼。試圖訪問nv(2.8);索引必須是一個正整數或邏輯

Zi = [0.2, 0.1, 0.1, 0.2, 0.2, 0.2]; 
pvi = [190, 72.2 51.6, 20.44, 15.57, 4.956]; 
Ki = [3.8, 1.444, 1.032, 0.4088, 0.3114, 0.09912]; 
A = 0; 
B = 0; 
for i = 1:length(Zi) 
    A = A + Zi(i)*(Ki(i)-1); 
B = B + Zi(i)*((1/Ki(i))-1); 
    end 
nv0= A/(A+B); 
% Display an error message if 0<nv<1 
if nv0 > 1 || nv0 < 0 || nv0 ==0 
    error('nv guess is incorrect') 
end 
% Step 2 - Solving Equation 5 - 16 for nv Using Newton-Raphson Method 
nv = nv0; 
nv0 = nv + .01; % Is this for the first gues abs dev? 
itermax = 200; 
fnkd = 0; 
fnk = 0; 
while abs(nv0 - nv) > tol & iter < itermax 
    iter = iter + 1; 
    nv0 = nv; 
for i= 1:length(Zi) 
     fnk = fnk + ((Zi(i) * (Ki(i)-1))/(nv(Ki(i)-1)+1)); 
    fnkd = fnkd +(-1*(Zi(i)*(Ki(i)-1)^2)/(nv(Ki(i)-1)+1)^2); 
end 
if fnkd ~= 0 
    nv = nv0 - fnk/fnkd; 
    else 
     nv = nv0 + 0.01; 
    end 
end 
nv 

這是我發現了錯誤:在FlashCal誤差(線74)FNK = FNK +((字(I)*(KI(I)-1))/(NV(KI(ⅰ )-1)+1));

其中: FNK =西格馬(ⅰ)紫(KI-1)/ NV(KI-1)+1 fnkd = - 西格馬(ⅰ)紫(KI-1)^ 2 /(NV(KI- 1)+1)^ 2

非常感謝

回答

0

NV(KI(ⅰ)-1)是無效的。既然你使用它來訪問位置(Ki(i)-1)的nv,你的意思是nv *(Ki(i)-1)或者Ki(i)-1應該計算爲一個整數。然而,它是2.8,即(3.8-1)

相關問題