通过创建java double[]数组,将double的java.util.ArrayList转换为Matlab数组
我有一个通过创建java double[]数组,将double的java.util.ArrayList转换为Matlab数组,java,arrays,matlab,Java,Arrays,Matlab,我有一个com.mongodb.basicdbliblist,我需要将其转换为Matlab数组。下面的代码是在Matlab中完成的,并显示了类型。arr中的所有元素都属于同一类型 >> whos arr Name Size Bytes Class Attributes arr 1x1 com.mongodb.BasicDBList
com.mongodb.basicdbliblist
,我需要将其转换为Matlab数组。下面的代码是在Matlab中完成的,并显示了类型。arr
中的所有元素都属于同一类型
>> whos arr
Name Size Bytes Class Attributes
arr 1x1 com.mongodb.BasicDBList
>> arr.size()
ans =
304
>> v = arr.get(0);
>> whos v
Name Size Bytes Class Attributes
v 1x1 8 double
我找到了几种方法:
2号单元格(到达阵列单元格)
或:
这一秒快了一个数量级。它创建了一个双[]数组。不幸的是,Matlab不会自动将其视为双精度,因此我需要将其转换为原始双精度
双人(纽瓦尔)
这抵消了与第一种方法相比,通过这种方法获得的任何速度增益
如果可以在Matlab中创建一个javadouble[]
,它将解决我的问题。我尝试了以下方法,但由于double
是一种基本类型,因此没有与之关联的类,因此给了我一个错误
newArr = javaArray('double', arr.size);
arr.toArray(newArr);
是否有一种方法可以在matlab中创建java Double数组。java代码类似于
double[]arr=newdouble[x]代码>“接收一个双精度的java.util.ArrayList(原语,而不是双精度)”--这是不可能的,正如您所说的那样。请澄清。它以com.mongodb.BasicDBList
的形式出现,扩展了ArrayList
。列表中的所有元素的类型均为double
。您可以在这里看到:有关BasicDBList
的更多信息。这可能吗?这扩展了ArrayList
,所以一定有一些包装类保存了这些值。我所做的一切都是在Matlab中进行的,我明白你的意思,并且同意这有点奇怪,但是如果arr
是com.mongodb.BasicDBList
并且我做arr.get(0)
Matlab返回一个double
,而不是对象
。还有别的办法可以查吗?我对Java不是很熟练。我敢说它实际上是作为ArrayList
实现的,因为它的内容可以更好地表示为double
。
newArr = javaArray('double', arr.size);
arr.toArray(newArr);