private double[][] getSimilarMatrix(IClusterCalculable[] oriData) {
        double[][] S = new double[dNum][dNum];//相似矩阵
        ArrayList<Double> list_S = new ArrayList<Double>();
//        double sum = 0;
        for (int i = 0; i < dNum; i++) {
            IClusterCalculable data_i = oriData[i];
            for (int j = 0; j < dNum; j++) {
                if (i != j) {
                    IClusterCalculable data_j = oriData[j];
                    //使用欧氏距离还是余弦距离，此处有待斟酌。注意，欧氏距离时，此处应该为负值
                    S[i][j] = -BasicUtils.calDist(data_i.getVecValues(), data_j.getVecValues());
                    list_S.add(S[i][j]);
//                    sum += S[i][j];
                }
//                else {
                //P(k)值的选取与聚类数目有关，有待校准
//                    S[i][i] =
//                }
            }
        }
        //pk值的确定，取该点所有对偶点的相似度中值
        Collections.sort(list_S);
        pk = list_S.get((int) (list_S.size() / 2));
////        pk = sum / list_S.size();
        for (int k = 0; k < dNum; k++) {
            S[k][k] = pk * coePK;//preference值的设置
        }
//        pk = 1f;
        return S;
    }