2010-03-16 54 views
7

Trong MATLAB tôi đang sử dụng một vài thói quen java tôi đã viết để giao tiếp với một cơ sở dữ liệu MyQSL. Một thường trình trả về giá trị booleanTrong MATLAB tôi có thể chuyển đổi một boolean java thành một MATLAB hợp lý?

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

Khi tôi sử dụng nó trong câu lệnh có điều kiện, tôi nhận được thông báo lỗi.

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

Có cách nào để sử dụng lớp boolean java làm loại logic MATLAB không? Hoặc tôi có phải nghỉ mát để trở về giá trị số nguyên từ thói quen java của tôi?

+0

Nếu điều này là một thói quen Java bạn đã viết, bạn có trở java.lang.Boolean hoặc boolean nguyên thủy? Nếu bạn trả về primitves, chúng sẽ tự động chuyển thành kiểu Matlab. Các đối tượng giá trị đóng hộp sẽ không. Nếu bạn nhận được trả về mảng, double [] và Double [] có tác động hiệu suất: nguyên thủy nhanh hơn. –

+0

Tôi vẫn là một người mới làm quen với java nên tôi không chắc lắm. Trong thói quen tôi khai báo 'boolean row = false;' và sau đó ở hàng cuối 'return;'. Bây giờ khi điều này được quay trở lại MATLAB nó đã xác định nó là một java.lang.Boolean. Bạn đang nói điều này là khác với kiểu boolean nguyên thủy? Có Tôi đã nhận thấy rằng trở về int và đôi loại mà những tự động được chuyển đổi sang kiểu float MATLAB bản địa. Nó chỉ là kiểu boolean dường như không hiệu quả với tôi. – Adrian

Trả lời

8

Ví dụ:

b = java.lang.Boolean(true); 

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

Và để đảm bảo:

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

    v   1x1     1 logical    
+0

Phát hiện - rất cảm ơn sự giúp đỡ của bạn. – Adrian

Các vấn đề liên quan