📄 euclideancalculation.java
字号:
/* 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -