Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB:从MATLAB到Java获取单元格数组

我在MATLAB中创建了一个数组,其中包含许多包含双精度数组的单元格类型对象。它基本上是一个数组,每个单元格都是一个double数组。

我想要做的是以某种方式导出这些,以便随后可以将数据作为int类型的数组的参差不齐的数组插入Java中。是否有关于如何最好地做到这一点的想法?


回答:
在Matlab中构造Java原语数组很困难,因为Matlab希望将其自动装箱成Matlab数组。

您可以做的是创建一个Java类来帮助您,使用方法签名来指导Matlab的自动装箱。这样的包装层可能比通过文本导出的往返过程更快,更方便。

package test; /** * Class to help build Java arrays from Matlab. */ public class JavaArrayBuilder { /** * Assign an array into a larger ragged array * @param array ragged array you're building * @param i index into array * @param subarray this gets autoboxed to int[] from Matlab */ public static void assignIntArray(Object[] array, int i, int[] subarray) { array[i] = subarray; } } 然后您可以像这样从Matlab调用它。

function ja = build_int_array mynums = { 1:2, 1:5, 1:7 }; % Create a Java array of arrays dummy = java.lang.Object(); ja = java.lang.reflect.Array.newInstance(dummy.getClass(), numel(mynums)); for i = 1:numel(mynums) test.JavaArrayBuilder.assignIntArray(ja, i-1, mynums{i}); end % Now you have a Java ragged array, albeit as Object[] instead of int[][] 之后,您将需要在Java中将Object []数组转换为int [] [],因为Matlab会将Java int [] []拆箱回到Matlab数组。将其保留为M代码中的Object []可以对其进行保护。

您也可以使用类似的包装器来构建列表或其他集合。这可能会更好地与您的其他Java代码配合,并且Collections不会在Matlab中解包。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 22:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.