2017-02-09 3 views
-1

Ich weiß nicht, warum es mir sagt, dass ich zuvor als eine Variable verwendet, wenn ich es noch nie zuvor verwendet habe."Var" wurde zuvor als Variable verwendet - MatLab

Hier ist mein Code:

price := 0; 
temp := 0; 

for i=1:m, 
    price += -y(i)*log(sigmoid(theta'*X(i,:))) -(1-y(i))*log(1-sigmoid(theta'*X(i,:))); 
end; 

J = price/m; 

for i=1:n, 
    temp := 0; 
    for i2=1:m,  
     temp += (1-sigmoid(theta'*X(i2,:)) - y(i2)) * X(j,i2); 
    end;  
    grad(i) = temp;  
end; 

Der Fehler ist hier:

'price += -y(i)*log(sigmoid(theta'*X(i,:))) -(1-y(i))*log(1-sigmoid(theta'*X(i,:)));' 

Protokollfehler: "Preis" zuvor als Variable verwendet wurde, mit seiner Verwendung in Konflikt hier als Name einer Funktion oder eines Befehls. Siehe "Wie MATLAB Befehlssyntax erkennt" in der MATLAB-Dokumentation für Details.

+1

Das ist nicht gültig Matlab-Code, weder ': =' oder '+ =' sind erlaubt. ': =' ist Teil von MuPad, nicht die Matlab-Sprache. –

Antwort

2

Ich denke, es gibt nichts wie += in Matlab. Also können Sie Folgendes nicht tun.

price += -y(i)*log(sigmoid(theta'*X(i,:))) - (1-y(i))*log(1-sigmoid(theta'*X(i,:))); 

Eher sollten Sie Folgendes tun.

price = price + -y(i)*log(sigmoid(theta'*X(i,:))) -(1-y(i))*log(1-sigmoid(theta'*X(i,:))); 

Außerdem ist := nicht nach Matlab Sprache erlaubt. Vielleicht ist Ihr Code in Mupad. Überprüfen Sie this aus.

+0

Vielen Dank Wasi! Ich bin neu in MatLab haha. Ich wünsche ihnen einen wunderbaren Tag! –

+1

@MichaelSzer besten Weg zu danken ist durch die Annahme der Antwort :) –

Verwandte Themen