Matlab documentation에 따르면 Java 메서드가 long
을 반환하면 Matlab에 할당되기 전에 double
으로 변환됩니다.matlab - 길이를 반환하는 Java 메소드에서 int64를 가져 오는 방법은 무엇입니까?
정밀도가 손실되었습니다. Java 메서드에서 반환 된 long
의 하위 자리에 관심이 있습니다. double
은이를 나타낼 수 없지만 Matlab의 int64
수 있습니다. (이것은 두 유형 모두 64 비트를 가졌음을 고려하면 분명하며 double
은 지수 중 일부를 사용하여 지수를 나타냅니다.)
Java 코드를 제어 할 수있는 경우, long
-이 경우 Matlab은 int64
으로 유지하지만 제 경우에는 라이브러리 함수를 호출합니다.
현재 내가 볼 수있는 가장 좋은 방법은 메서드를 호출하고 배열에서 응답을 반환하는 Java에서 래퍼를 작성하는 것입니다. 그러나이 접근법에는 이식성 문제가 있습니다. 더 좋은 방법이 있습니까?
Yikes, 좋은 정보. 나는 int64s를 앞뒤로 돌아 다니는 프로젝트를 가지고 있으며, 이것을 점검하고 점검해야 할 것이다. – JonB
한 가지 생각 - long이 아닌 java.lang.Long을 반환하면 (matlab에서) .toString()을 수행하고 그 결과를 문자열로 가져 와서 matlab에서 다시 변환 할 수 있습니다. – JonB
즉 Matlab은 sscanf (char (wrapperFun(). toString), '% ld')를 사용하여 int64를 가져올 수 있습니다. – JonB