2016-04-30 10 views
-1

Ich verstehe nicht, warum dieser Fehler kommt und ich brate mein Gehirn, aber kann es nicht finden. Der Fehler lautet: subscript indices must be either positive integers less than 2^31 or logicals aufgerufen aus Zeile 51 Spalte 12, ich werde es im folgenden Code markieren.Kann nicht herausfinden, meine Syntaxfehler in Oktav Skript

Ich sehe nicht, warum mein Code interpretiert, dass ich xintv4 als einen Index verwende. f2 ist eine Funktion und ich rufe es eine Reihe von x-Werte zu bewerten ...

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 

Ich habe versucht, das Spiel mit dem for p4 = 1:2, indem es for p4 = 1 ändern und dies gearbeitet, aber ich Pausen, wenn ich erhöhen die Schleife zu 2,3 ​​oder 4 (etc).

Hinzugefügt das MATLAB-Tag, weil sie ähnliche Sprachen sind.

+1

Minimal Debugging-Methode: test 'f2 (xintv4)' nach dem Fehler, dann nur 'f2' ... – ederag

Antwort

2
f2 = f2(xintv4)+c4; 

ordnen Sie den Rückgabewert der anonymen Funktion f2 zum Variablef2. Beim zweiten Mal ist f2 kein Funktionsname mehr.

+0

Lol wops .... ja, das war es. Vielen Dank! – whatwhatwhat

Verwandte Themen