アットウィキロゴ
 
/*
* 作成日: 2007/06/11
*
* TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
package shimane;

import java.util.Vector;

/**
* @author miyanishi
*
* TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
public class Similarity {
private Vector vec1;
private Vector vec2;

public double cosine(Vector v1, Vector v2){
	return innerproduct(v1,v2)/(sumsquares(v1)*sumsquares(v2));
}


/*vのノルム計算*/
private double sumsquares(Vector v){
	double x = 0;
	for(int i = 0 ; i < v.size() ; i++){
		String s = String.valueOf( v.get(i) );
		double f = Double.parseDouble(s);
		x = x + f*f;
		//System.out.println(x +" ");
	}
	//System.out.println( Math.sqrt(x) );
	return Math.sqrt(x);
}

/*内積計算*/
private double innerproduct(Vector v1, Vector v2){
	double x = 0;
	
	for(int i = 0 ; i < v1.size() ; i++){//ベクトルの次元は同じなのでv1で統一
		String s1 = String.valueOf( v1.get(i) );
		double f1 = Double.parseDouble(s1);
		
		String s2 = String.valueOf( v2.get(i) );
		double f2 = Double.parseDouble(s2);
		
		x = x + f1*f2;
		//System.out.print(x +" ");
	}
	//System.out.println(x);
	return x;
}
}
最終更新:2007年10月30日 02:06