版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/p1126500468/article/details/79559150
matlab验证了我的数据处理方法,今天换成了c++版,实现matlab的mapminmax()函数。代码如下:
void normalize(float *data)
{
int datamax = 1; //设置归一化的范围
int datamin = 0;
std::vector<float> features;
for (int d = 0; d < 3000; ++d)
features.push_back(data[d]);
//特征归一化
float Maxvalue = *max_element(features.begin(), features.end());//取容器中的最大值
float Minvalue = *min_element(features.begin(), features.end());//取容器中的最小值
for (int f = 0; f < features.size(); ++f)
{
features[f] = (datamax - datamin)*(features[f] - Minvalue) / (Maxvalue - Minvalue ) + datamin;
//features[f] = (features[f] - Minvalue) / (Maxvalue - Minvalue);
data[f] = features[f];
}
}
matlab中的归一化公式为:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin
此方法与matlab里的函数结果一致。