如何在matlab中实现优先级队列

use*_*790 3 matlab

matlab中是否有任何库提供min priorityqueue的功能

import java.util.PriorityQueue;
import java.util.*;

public class MyQueue {
  Comparator<Double> c;
  PriorityQueue<Double> PQ;

  public MyQueue() {
    c = new Comparator<Double>(){
            public int compare(Double o1, Double o2){
              if(o2 > o1) {
                return -1;
              } else if(o1 > o2) {
                return 1;
              } else {
                return 0;
              }
            }
        };
    PQ = new PriorityQueue<Double>(1000,c);
  }

  public void addElement(double d) {
    PQ.add(d);
  }

  public double removeElement() {
    return(PQ.remove());
  }
}
Run Code Online (Sandbox Code Playgroud)

我在java中实现了这个priorty队列.我可以从matlab调用它.但是,我需要将每个成本与索引相关联.我的意思是,不仅需要存储节点的成本,还需要存储其索引.我怎样才能做到这一点.我需要从matlab传递索引

Rod*_*uis 5

如此处所示,您可以使用默认Java,PriorityQueue如下所示:

>> q=java.util.PriorityQueue;
>> q.add({value,index});
Run Code Online (Sandbox Code Playgroud)

这是从Java 1.5开始提供的,它自7.0.4以来在所有Matlab版本中预先捆绑.
否则,您可以使用文件交换中的那个,您必须编译它.

还有一个Simulink模块,但我怀疑这是你所追求的.

  • @user34790 出现了一些谷歌搜索 [本网站](http://www.mathworks.de/matlabcentral/answers/37185-cannot-call-java-class-from-matlab) 和 [this](http:/ /www.cs.yale.edu/homes/spielman/ECC/javaMatlab.html) 一个,[this](http://www.mathworks.com/matlabcentral/newsreader/view_thread/266022) 一个。这应该让您对如何在 Matlab 中加载自定义类有一个很好的了解,并让您开始使用 Comparator 类。 (2认同)