2016-05-02 15 views
1

Ich versuche, diese einfache If-Anweisung MATLAB-Code auf MATLAB 7.6.0 (R2008a) Version auszuführen.Wenn Anweisung MATLAB Beispiel Ausgabe

* Ich tippte diese in M-Datei:

function output = DEMO(input) 
if input > 0 
    fprintf('Greater than 0') 
elseif input < 0 
    fprintf('Less then 0') 
else 
    fprintf('Equals 0') 
end 

outvar = 1; 

* Versuchte es in Befehlsfenster zu implementieren: Jedes Mal, wenn ich eine Nummer eingegeben, es gibt mir immer größer als 0!

Wie hier: enter image description here

Was ist los? Ich konnte es nicht herausfinden? Liegt es daran, dass outvar = 1? Ich habe versucht, es 0 zu machen, habe das gleiche Ergebnis! -.-

+0

Typ 'DEMO (-1)'? – Yvon

+0

Ja, es gab mir weniger als null – Mariah

+0

Aber was ist das Ans ist immer eins! liegt es daran, dass das Outvar? – Mariah

Antwort

5

Wenn Sie rufen eine Funktion die folgende Art und Weise:

DEMO 0 

Diese implizit geht 0 als String: '0'. Wenn Sie einen Vergleich zwischen den Zeichenfolgen '0' und 0 durchführen, wird '0' in den ASCII-Code (32) konvertiert und scheint immer größer als 0 zu sein.

Sie sollten stattdessen Klammern verwenden, um die Funktion explizit aufzurufen und eine Zahl zu übergeben.

DEMO(0) 

Als Randbemerkung, Sie scheinen zu zu zuweisen, aber dem Ausgangsargument Ihrer Funktion dann ist eigentlich output. Außerdem weisen Sie 1 am Ende unabhängig von der Bedingung zu. Wenn Sie für jede Bedingung einen anderen Ausgabewert wünschen, müssen Sie den Ausgabewert in die if Interessenerklärung festlegen.

Vielleicht so etwas wie:

function output = DEMO(input) 
    if input > 0 
     fprintf('Greater than 0') 
     output = 1; 
    elseif input < 0 
     fprintf('Less then 0') 
     output = -1; 
    else 
     fprintf('Equals 0') 
     output = 0; 
    end 
end 
+0

Danke, das hat für mich funktioniert. – Mariah