2010-03-16 4 views
7

In MATLAB verwende ich ein paar Java-Routinen, die ich geschrieben habe, um mit einer MyQSL-Datenbank zu interagieren. Eine Routine gibt einen booleschen Wert zurückIn MATLAB kann ich eine Java-Boolean in eine MATLAB-Logik konvertieren?

result <1x1 java.lang.Boolean> 
>> result 
result = 
true 

Wenn ich es dann in einer bedingten Anweisung verwende, erhalte ich eine Fehlermeldung.

Gibt es eine Möglichkeit, die Java-Boolesche Klasse als logischen MATLAB-Typ zu verwenden? Oder muss ich auf Rückgabe von Integer-Werten aus meinen Java-Routinen zurückgreifen?

+0

Wenn dies eine Java-Routine, die Sie schrieb, sind Sie java.lang.Boolean oder die primitive boolean Rückkehr? Wenn Sie Primitive zurückgeben, werden sie automatisch in Matlab-Typen konvertiert. Die Boxed-Value-Objekte werden nicht. Wenn Sie Arrays zurückgeben, haben double [] und Double [] Auswirkungen auf die Leistung: Primitive sind schneller. –

+0

Ich bin immer noch ein Java-Neuling, also bin ich mir nicht sicher. In der Routine deklariere ich 'boolean row = false;' und dann am Ende 'Zeile zurück'. Wenn dies nun zu MATLAB zurückkehrt, wird es als java.lang.Boolean identifiziert. Willst du sagen, das ist anders als der primitive boolesche Typ? Ja, ich habe festgestellt, dass die zurückgegebenen int und double Typen automatisch in den nativen MATLAB Float Typ konvertiert werden. Es ist nur der boolesche Typ, der für mich nicht zu funktionieren scheint. – Adrian

Antwort

8

Beispiel:

b = java.lang.Boolean(true); 

if b.booleanValue 
    disp('val is true') 
else 
    disp('val is false') 
end 

Und um sicherzustellen, dass:

>> v = b.booleanValue; 
>> whos v 
    Name  Size   Bytes Class  Attributes 

    v   1x1     1 logical    
+0

Spot - Vielen Dank für Ihre Hilfe. – Adrian

Verwandte Themen