2010-03-16 12 views
7

MATLAB'da bir MyQSL veritabanıyla arayüz oluşturmak için yazdığım birkaç java rutinini kullanıyorum. Sonra koşullu açıklamada için kullandığınız zaman bir rutin döner bir mantıksal değerdirMATLAB'da bir java booleanını MATLAB mantığına dönüştürebilir miyim?

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

hata mesajı alabilirsiniz.

>> if result, 
disp('result is true') 
end 
??? Conversion to logical from java.lang.Boolean is not possible. 

Java boole sınıfını MATLAB mantıksal türü olarak kullanmanın bir yolu var mı? Ya da benim java rutinlerinden dönen tamsayı değerlerine başvurmalı mıyım?

+0

bu yazdığın bir Java düzenini, java.lang.Boolean veya ilkel boolean iade edilirse? Primitelere geri dönerseniz, bunlar otomatik olarak Matlab türlerine dönüşür. Kutulu değer nesneleri olmaz. Geri dönen dizileri alırsanız, çift [] ve Double [] performans etkilerine sahiptir: temel değerler daha hızlıdır. –

+0

Hala bir java acemiyim, bu yüzden emin değilim. Rutin olarak 'boolean row = false;' ve sonra 'dönüş sırasını'; Şimdi bu MATLAB'a döndüğünde, onu bir java.lang.Boolean olarak tanımladı. Bunun ilkel boole türünden farklı olduğunu mu söylüyorsunuz? Evet, otomatik olarak bu türlerin yerel MATLAB float tipine dönüştürülmesini sağlayan int ve double tiplerini fark ettim. Bu sadece benim için çalışmayan boole tipi. – Adrian

cevap

8

Örnek:

b = java.lang.Boolean(true); 

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

Ve emin olmak için:

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

    v   1x1     1 logical    
+0

Spot on - yardımlarınız için çok teşekkürler. – Adrian

İlgili konular