//package com.nowjava;//n o w j a v a . c o m - 时 代 Java
public class Main {
public static void main(String[] argv) throws Exception {
double[] v1 = new double[] { 34.45, 35.45, 36.67, 37.78, 37.0000,
37.1234, 67.2344, 68.34534, 69.87700 };
double[] v2 = new double[] { 34.45, 35.45, 36.67, 37.78, 37.0000,
37.1234, 67.2344, 68.34534, 69.87700 };
System.out.println(correlation(v1, v2));
}
/**
* Computes the (linear) correlation between two arrays.
* Squaring this result and multiply by 100 gives you
* the percentage of correlation.
*/
public static double correlation(double[] v1, double[] v2) {
double denom = Math.sqrt(variance(v1) * variance(v2));
if (denom != 0)
return (covariance(v1, v2) / denom);
else {
if ((variance(v1) == 0) && (variance(v2) == 0))
return (1.0);
else
return (0.0); // impossible to correlate a null signal with another/**来自 N o w J a v a . c o m - 时代Java**/
}
}
/**
* Computes the (linear) correlation between two arrays.
* Squaring this result and multiply by 100 gives you
* the percentage of correlation.
*/
public static double correlation(int[] v1, int[] v2) {
double denom = Math.sqrt(variance(v1) * variance(v2));
if (denom != 0)
return (covariance(v1, v2) / denom);
else {
if ((variance(v1) == 0) && (variance(v2) == 0))
return (1.0);
else
return (0.0); // impossible to correlate a null signal with another
}
}
/**
* Computes the (bias-corrected sample) variance.
*/
public static double variance(double[] v) {
if (v.length > 1) {
final double m = mean(v);
double ans = 0.0;
for (int i = 0; i < v.length; i++)
ans += (v[i] - m) * (v[i] - m);
return ans / (v.length - 1);
} else
throw new IllegalArgumentException(
"Array length must be of 2 or greater.");
}
/**
* Computes the (bias-corrected sample) variance.
*/
public static double variance(int[] v) {
if (v.length > 1) {
final double m = mean(v);
double ans = 0.0;
for (int i = 0; i < v.length; i++)
ans += (v[i] - m) * (v[i] - m);
return ans / (v.length - 1);
} else
throw new IllegalArgumentException(
"Array length must be of 2 or greater.");
}
/**
* Computes the covariance.
*/
public static double covariance(double[] v1, double[] v2) {
if (v1.length != v2.length)
throw new IllegalArgumentException(
"Arrays must have the same length : " + v1.length
+ ", " + v2.length);
final double m1 = mean(v1);
final double m2 = mean(v2);
double ans = 0.0;
for (int i = 0; i < v1.length; i++)
ans += (v1[i] - m1) * (v2[i] - m2);
return ans / (v1.length - 1);
}
/**
* Computes the covariance.
*/
public static double covariance(int[] v1, int[] v2) {
if (v1.length != v2.length)
throw new IllegalArgumentException(
"Arrays must have the same length : " + v1.length
+ ", " + v2.length);
final double m1 = mean(v1);
final double m2 = mean(v2);
double ans = 0.0;
for (int i = 0; i < v1.length; i++)
ans += (v1[i] - m1) * (v2[i] - m2);
return ans / (v1.length - 1);
}
/**
* Computes the mean.
*/
public static double mean(double[] v) {
if (v.length == 0)
throw new IllegalArgumentException(
"Nothing to compute! The array must have at least one element.");
return (mass(v) / (double) v.length);
}
/**
* Computes the mean.
*/
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。