public double[][] PCA_transform(double[][] data,double[] pca_mean_,double[][] pca_components_,int MFCC_Len,int PCA_Len) { if(pca_mean_!=null) { double[][] tempData = data; for(int i=0;i<data.length;i++){ for(int j=0;j<data[i].length;j++){ tempData[i][j]=data[i][j]-pca_mean_[j]; } } data=tempData; } double [][]b = new double[MFCC_Len][PCA_Len]; for (int i = 0; i < MFCC_Len; i++) { b[i] = new double[PCA_Len]; } for (int i = 0; i < PCA_Len; i++) { for (int j = 0; j < MFCC_Len; j++) { b[j][i] = pca_components_[i][j]; } } return dot(data, b); } public double[][] dot(double[][] data, double[][] pca_components_,int MFCC_Len,int PCA_Len) { double[][] filter_banks = new double[data.length][PCA_Len]; for (int i = 0; i < data.length; i++) { for (int j = 0; j < PCA_Len; j++) { for(int k=0;k<MFCC_Len;k++){ filter_banks[i][j] += pca_components_[k][j] * data[i][k]; } } } return filter_banks; }
Android PCA降维处理
最新推荐文章于 2021-05-27 09:56:10 发布