C++ 实现matlab数据归一化函数mapminmax

版权声明:本文为博主原创文章,未经博主允许不得转载。 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里的函数结果一致。

猜你喜欢

转载自blog.csdn.net/p1126500468/article/details/79559150
今日推荐