⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distancematrix.java

📁 著名的开源仿真软件yale
💻 JAVA
字号:
package edu.udo.cs.yale.operator.clusterer.upgma;public class DistanceMatrix implements Matrix {    private double distance[][];    private String name[];    /** Copy constructor */    private DistanceMatrix(DistanceMatrix matrix) {	this.distance = new double[matrix.distance.length][];	for (int i = 0; i < this.distance.length; i++) {	    this.distance[i] = new double[i];	    for (int j = 0; j < i; j++) {		this.distance[i][j] = matrix.distance[i][j];	    }	}	this.name = new String[matrix.name.length];	for (int i = 0; i < this.name.length; i++) {	    this.name[i] = matrix.name[i];	}    }    public DistanceMatrix(int n) {	distance = new double[n][];	for (int i = 0; i < n; i++) {	    distance[i] = new double[i];	}	name = new String[n];    }    public String getName(int i) {	return name[i];    }    public void setName(int i, String name) {	this.name[i] = name;    }    public int getDimension() {	return distance.length;    }    public double getDistance(int i, int j) {	if (i == j) return 0;	if (j < i) return getDistance(j, i);	return distance[j][i];    }    public void setDistance(int i, int j, double d) {	if (d < 0.0) throw new IllegalArgumentException("Distances must be > 0");	if (i == j) {	    if (d != 0.0) throw new IllegalArgumentException("d("+i+","+i+") = "+d+" != 0");	    else return;	}	if (j < i) { setDistance(j, i, d); return; }	distance[j][i] = d;    }    /** Throws an IllegalArgumentException if the matrix is no distance measure.  */    public void verify() {	for (int i = 0; i < distance.length; i++) {	    for (int j = 0; j < i; j++) {		for (int k = 0; k < distance.length; k++) {		    if (getDistance(i,j) + getDistance(j,k) < getDistance(i,k)) {			throw new IllegalArgumentException("Matrix violates triangle inequality ("+i+","+j+","+k+")");		    }		}	    }	}    }    public DistanceMatrix copy() {	return new DistanceMatrix(this);    }    public String toString() {	String str = "";	for (int i = 0; i < distance.length; i++) {	    if (i != 0) str += "\n";	    for (int j = 0; j < distance.length; j++) {		if (j != 0) str += "\t";		str += getDistance(i,j);	    }	}	return str;    }    public double getValue(int i, int j) { return getDistance(i,j); }    public void setValue(int i, int j, double v) { setDistance(i,j,v); }    public boolean isFixed(int i, int j) { return (i <= j);  }    public String getLabel(int i) { return name[i].toString(); }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -