2016-04-30 46 views
-1

我不明白爲什麼會出現這個錯誤,我一直在油炸我的大腦但找不到它。從第51行第12列調用的錯誤爲:subscript indices must be either positive integers less than 2^31 or logicals,我將在下面的代碼中標記它。在Octave腳本中找不到我的語法錯誤

我不明白爲什麼我的代碼解釋我使用xintv4作爲下標。 f2是一個功能,我稱它來評估一組x值...

f2 [email protected](x) x.^2 .* e.^(-x).*sin(pi.*x); 

a4 = -1; 
    b4 = 1; 
    c4 = 0.84685; 

    for N4 = [10]#, 100, 1000, 10000] 

     disp(""); 

     B = 1;    

     for p4 = 1:2 

     xintv4 = rand(1,N4)*2-1; 
     yintv4 = rand(1,N4)+c4; 
     f2 = f2(xintv4)+c4; #error points to this line at the "=" sign 
     nf4 = 0; 
     nf4count = 0; 
     nf4 = f2./yintv4;   

     for k = 1:N4 

       if nf4(k) >= 1 

        nf4count += 1; 

       else 

        nf4count += 0; 

       end     

     endfor 

     #disp("nf:");disp(nf); 
     #disp("nfcount:");disp(nfcount); 

     I4(p4) = ((B+c4)*(b4-a4)*(nf4count/N4))-(c4*(b4-a4));   

     endfor 

     meanI4 = mean(I4); 
     stdevI4 = std(I4); 

     disp("N = "); disp(N4); 
     disp("Mean of the integral using method 2:");disp(meanI4); 
     disp("Standard deviation of the integral using method 2:");disp(stdevI4);  

    endfor 

我試圖將其更改爲for p4 = 1for p4 = 1:2玩弄這工作,但我休息的時候我增加循環2,3或4(等)。

添加了MATLAB標籤,因爲它們是相似的語言。

+1

最小的調試方法:在錯誤後測試'f2(xintv4)',然後只是'f2' ... – ederag

回答

2
f2 = f2(xintv4)+c4; 

您分配匿名函數f2變量f2返回值。第二次,f2不再是一個函數名稱。

+0

Lol woops .... yea就是這樣。謝謝! – whatwhatwhat