2010-03-16 57 views
7

在MATLAB中,我使用了一些我编写的与MyQSL数据库接口的java例程。一个例程返回一个布尔值在MATLAB中,我可以将Java布尔转换为MATLAB逻辑?

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

当我然后在条件语句中使用它时,我收到一条错误消息。

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

有没有办法将java布尔类用作MATLAB逻辑类型?或者我不得不求助于从我的java例程返回整数值?

+0

如果这是你写一个Java程序,要退的java.lang.Boolean或原始布尔?如果你返回primitves,他们会自动转换为Matlab类型。盒装值对象不会。如果您返回数组,double []和Double []会产生性能影响:原语更快。 – 2010-03-16 21:39:36

+0

我还是一个java新手,所以我不太确定。在例程中,我声明'boolean row = false;'然后在'return row'结尾处。现在,当这回到MATLAB它确定它是一个java.lang.Boolean。你是说这与原始布尔类型不同?是的,我注意到返回的int和double类型会自动转换为本地MATLAB浮点类型。这只是布尔类型,似乎不适合我。 – Adrian 2010-03-17 15:21:15

回答

8

例子:

b = java.lang.Boolean(true); 

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

,并确保:

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

    v   1x1     1 logical    
+0

现货 - 非常感谢您的帮助。 – Adrian 2010-03-16 12:36:44