gpt4 book ai didi

java - MATLAB:从 MATLAB 获取单元格数组到 Java

转载 作者:行者123 更新时间:2023-11-30 05:15:05 24 4
gpt4 key购买 nike

我在MATLAB中创建了一个数组包含许多单元类型对象,其中包含 double 组。它基本上是一个 <1xn cell> 数组,每个单元都是一个 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 代码更好地配合,并且集合不会在 Matlab 中拆箱。

关于java - MATLAB:从 MATLAB 获取单元格数组到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com