高效地将Java列表转换为Matlab矩阵

安德鲁·麦克林

我正在从Matlab调用Google协议缓冲区Java API。这工作得很好,但是我遇到了很大的性能瓶颈。大量数据作为以下类型的对象返回:

java.util.Collections$UnmodifiableRandomAccessList

它们实际上包含一个浮动列表。我需要将其转换为Matlab矩阵。到目前为止,我发现的最好方法是致电:

cell2mat(cell(Q.toArray()))

但是,这一行是代码中巨大的性能瓶颈。

请注意,我知道Google协议缓冲区的FarSounder Matlab解析器生成器,不幸的是,这些生成器非常慢。有关我的问题(YMMV)的一些大致基准速度,请参见下文。高就是好。

  • Farsounder Matlab:0.03
  • 纯Python:1
  • 从Matlab调用的Java API(仅解析和提取元数据):10
  • 从Matlab调用的Java API(解析和提取元数据和数据):0.25

如果不是为了将其转换java.util.Collections$UnmodifiableRandomAccessList为Matlab矩阵而产生的开销,那么从Matlab调用Java API的方法将看起来很有前途。

是否有更好的方法将此Java对象转换为Matlab矩阵?

请记住,返回此类型的方法是在自动生成的代码中。

埃德里克

您可能最好编写一小段额外的Java代码,如下所示:

import java.util.List;
import java.util.ListIterator;

class Helper {
    public static float[] toFloatArray(List l) {
        float retValue[] = new float[l.size()];
        ListIterator iterator = l.listIterator();
        for (int idx = 0; idx < retValue.length; ++idx ){
            // List had better contain float values,
            // or else the following line will ClassCastException.
            retValue[idx] = (float) iterator.next();
        }
        return retValue;
    }
}

我看到的是:

>> j = java.util.LinkedList;
>> for idx = 1:1e5, j.add(single(idx)); end
>> tic, out = Helper.toFloatArray(j); toc
Elapsed time is 0.006553 seconds.
>> tic, cell2mat(cell(j.toArray)); toc
Elapsed time is 0.305973 seconds.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有效地将Java列表转换为Matlab矩阵

来自分类Dev

高效地将列从数据框转换为字典列表

来自分类Dev

高效地将pandas数据帧转换为scipy稀疏矩阵

来自分类Dev

将矩阵转换为列表

来自分类Dev

将矩阵转换为列表列表

来自分类Dev

高效地将List <Object>转换为Object [] []

来自分类Dev

高效地将gzip文件转换为bzip2

来自分类Dev

使用MatLab将逻辑转换为矩阵

来自分类Dev

将python ndarray转换为Matlab矩阵

来自分类Dev

Haar 将矩阵从 Matlab 转换为 Python

来自分类Dev

将字典列表转换为numpy矩阵?

来自分类Dev

R将矩阵转换为列表

来自分类Dev

将列表转换为矩阵或数组?

来自分类Dev

将列表转换为python中的矩阵

来自分类Dev

将列表转换为 np.arrays 高效

来自分类Dev

在Matlab中,如何将点列表转换为二进制矩阵

来自分类Dev

Matlab:如何将矩阵转换为Toeplitz矩阵

来自分类Dev

将稀疏矩阵索引列表转换为R中的矩阵

来自分类Dev

R:将矩阵转换为子矩阵列表

来自分类Dev

从最近邻居搜索创建邻接矩阵。(将邻接列表转换为邻接矩阵)-Matlab

来自分类Dev

将表列表转换为矩阵列表

来自分类Dev

将多个常数转换为矩阵并将其转换为Matlab中的块对角矩阵

来自分类Dev

将矩阵次对角线转换为列 r 的高效算法

来自分类Dev

无法在MATLAB中使用regionprops将结构转换为矩阵

来自分类Dev

将Matlab代码转换为python以创建矩阵

来自分类Dev

如何将矩阵matlab转换为.txt文件?

来自分类Dev

无法在MATLAB中使用regionprops将结构转换为矩阵

来自分类Dev

将matlab稀疏矩阵转换为单精度

来自分类Dev

高效地将字典的键和值转换为pandas数据框中的列

Related 相关文章

热门标签

归档