3

我正在关注这个答案,在 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'.

我该如何解决?

4

1 回答 1

3

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

因此,将 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 实现。

于 2013-01-23T20:03:06.047 回答