java 编写的计算Pearson相关系数的程序出现了NaN值,要怎样处理呢?求大神帮忙
public static double Pearson1(double sa[][]){int row=sa.length; //sa[][]常为10列
int col = sa[0].length;
double av[] = new double [col];
double wei_pearson[]=new double[col];
//求每个列向量之间的平均值
for(int j=0;j<col;j++){
double avj = 0; //存放每个向量的各元素的平均值
double sumrate = 0; //存放每个向量的各元素的和
for(int i=0;i<row;i++){
sumrate += sa[i][j];
}
avj = sumrate/row;
av[j] = avj;
}
//System.out.println("pearson:");
double psum=0; //存放所有相关系数的平均数作为该列最终的相关系数
for(int i=0;i<col;i++){
double sum1=0;
double sum2=0;
double sum3=0;
double sum33=0;
double sumji=0;
for(int j=0;j<row;j++){
double aimcha;
double usercha;
aimcha=sa[j][0]-av[0];
usercha=sa[j][i]-av[i];
sumji+=aimcha*usercha;
sum1+=aimcha*aimcha;
sum2+=usercha*usercha;
}
sum33=(double)(sum1*sum2);
sum3=Math.sqrt(sum33);
double wei=sumji/sum3;
wei_pearson[i]=wei;
// System.out.println("第"+(i+1)+": "+wei_pearson[i]); //分别打印目的列向量与窗口内其他向量的相关系数
psum = psum + wei_pearson[i];
}
psum = psum/col;
//System.out.println(psum);
return psum;
}
以上是计算相关系数的程序,简单测试时不会出现错误,但是在实验应用中会出现好多NaN值,这该如何处理呢??急求大神帮忙,谢谢!!!