euclideancalculation.java

来自「dm s preparing process. In this case we 」· Java 代码 · 共 60 行

JAVA
60
字号
/* created at 2005-12-24 */
package com.clustering.core.support;

import com.clustering.data.Record;
import com.clustering.data.SourceInfo;

/**
 * 欧式距离的计算方法
 * 
 * @author Avon
 * @version 0.9
 * @since 0.9
 */
public class EuclideanCalculation implements DistanceCalcutation {
	private SourceInfo info;

	// 欧式距离只会用到SourceInfo中getColumnNum,因此引入了colNum
	private long colNum;

	public EuclideanCalculation() {
		super();
		colNum = -1;
	}

	public EuclideanCalculation(SourceInfo info) {
		this.info = info;
		colNum = info.getColumnNum();
	}

	public SourceInfo getInfo() {
		return info;
	}

	public void setInfo(SourceInfo info) {
		this.info = info;
		colNum = info.getColumnNum();
	}

	/*
	 * 如果声明成getDistance(Record recordi, Record recordj, int colNum),那么
	 * getDistance就可以是static类型,但是这破坏了概念关系[DistanceCalcutation中没有 getDistance]
	 */
	@SuppressWarnings("deprecation")
	public double getDistance(Record recordi, Record recordj) {
		if (-1 == colNum) {
			// 认为同一数据源中的所有记录都是相同的
			colNum = recordi.getAsArray().length;
		}
		double total = 0;
		double tmp;
		for (long i = 0; i < colNum; i++) {
			tmp = recordi.getItem(i) - recordj.getItem(i);
			total += tmp * tmp;
		}
		if (0 == total)
			return 0;
		return Math.sqrt(total);
	}
}

⌨️ 快捷键说明

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