/*************featureNormalize.m******************
功能:对列特征数据进行归一化处理;
输入:样本数*矩阵数的二维矩阵;
输出:返回归一化后矩阵,列归一化;
**********************************************/
void featureNormalize (float **InputFeature,int SampleLength, int FeatureSize)
{
int i,j;
float temp;
float sum=0;
float *mu=(float *)malloc(sizeof(float) * FeatureSize);
float *sigma=(float *)malloc(sizeof(float) * FeatureSize);
//求每列的均值
for (i=0;i<FeatureSize;i++){
sum=0;
for (j=0;j<SampleLength;j++){
sum+=InputFeature[j][i];
}
mu[i]=sum/SampleLength;
}
//求每列的方差
for (i=0;i<FeatureSize;i++){
sum=0;
for (j=0;j<SampleLength;j++){
sum +=pow((InputFeature[j][i] - mu[i]),2);
}
sigma[i]=sqrt(sum/(SampleLength-1));
}
//归一化操作
for (i=0;i<FeatureSize;i++){
for (j=0;j<SampleLength;j++){
InputFeature[j][i]=(InputFeature[j][i]-mu[i])/sigma[i];
}
}
free(mu);
free(sigma);
}
数据归一化;