【问题标题】:Matlab structs and Java LinkedListMatlab 结构和 Java LinkedList
【发布时间】:2013-01-23 17:12:55
【问题描述】:

我关注this answer,在matlab中实现一个队列。

但与答案不同,我不是在排队 strings 而是在排队 structs。这是我的示例代码

import java.util.LinkedList;
queue = LinkedList();
queue.add(struct('f', f, 'A', A)) % f and A are matrices

但这给了我一个错误

No method 'add' with matching signature found for class 'java.util.LinkedList'.

我该如何解决这个问题?

【问题讨论】:

    标签: java matlab struct queue


    【解决方案1】:

    MATLAB 与 Java 有着非常密切的联系,它可以自动将许多 MATLAB 本地数据类型与它们的 Java 对应物相互转换......除了结构。如果您考虑一下,这是有道理的:有一种自然的方式来映射 POD 类型和 POD 类型的数组,甚至元胞数组也自然地映射到 java.lang.Object 数组。但是创建结构的 Java 表示将需要相应的类定义。详情请见this MATLAB documentation

    因此,将 MATLAB 结构存储在 Java 容器中将需要一些额外的,可能是第三方代码。相反,你想做什么?根据您的要求(即您希望队列有多大等),使用简单的元胞数组实现队列可能非常好:

    >> queue = {}; % create empty queue
    >> queue{end+1} = x; % push x onto queue
    >> q(1) = []; % pop top element from queue
    

    但是一连串的推动将花费二次时间,对吧?是的...但是 O(n^2) 上的常数非常小,因此这个实现将在速度上击败许多其他非 MEXed 实现。

    【讨论】:

    • 我基本上是在尝试使用线性程序求解器来实现整数程序求解器。我试过这个,它只是不够快,无法满足我的需要。有没有其他方法可以解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多