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 コンテナーに格納するには、追加の、場合によってはサードパーティ コードが必要になります。代わりに、あなたは何をしようとしていますか?要件 (つまり、キューがどれくらい大きくなると予想されるかなど) によっては、単純な cell 配列を使用してキューを実装してもまったく問題ない場合があります。

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

しかし、一連のプッシュには 2 次時間がかかりますよね? はい...しかし、そのO(n ^ 2)の定数は非常に小さいため、この実装は他の多くのMEX化されていない実装よりも速度が優れています。

于 2013-01-23T20:03:06.047 に答える