package i5.las2peer.services.ocd.algorithms.utils;
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.ArrayRealVector;
public class Similarities {
public double cosineSim(Array2DRowRealMatrix matrix){
double res = 0;
double dot = 0;
double normS = 0;
double normR = 0;
ArrayRealVector sender = (ArrayRealVector)matrix.getRowVector(0);
ArrayRealVector receiver = (ArrayRealVector)matrix.getRowVector(1);
dot = sender.dotProduct(receiver);
normS = sender.getNorm();
normR = receiver.getNorm();
if(normS != 0 && normR != 0){
res = dot / (normS * normR);
}
return res;
}
public double cosineSim(ArrayRealVector v, ArrayRealVector u){
double res = 0;
double dot = 0;
double normV = 0;
double normU = 0;
dot = v.dotProduct(u);
normV = v.getNorm();
normU = u.getNorm();
if(normV != 0 && normU != 0){
res = dot / (normV * normU);
}
return res;
}
}