C++实现MATLAB中mapminmax函数,返回一维vector
时间: 2024-01-29 20:01:58 浏览: 77
下面是C++实现MATLAB中mapminmax函数,返回一维vector的代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<double> mapminmax(vector<double> &input, double min_val, double max_val) {
int n = input.size();
double min_val_input = *min_element(input.begin(), input.end());
double max_val_input = *max_element(input.begin(), input.end());
vector<double> output(n);
double range = max_val_input - min_val_input;
for (int i = 0; i < n; i++) {
output[i] = (input[i] - min_val_input) / range * (max_val - min_val) + min_val;
}
return output;
}
int main() {
vector<double> input = {1, 2, 3, 4, 5};
double min_val = 0, max_val = 1;
vector<double> output = mapminmax(input, min_val, max_val);
for (auto val : output) {
cout << val << " ";
}
return 0;
}
```
该代码中,`mapminmax`函数的参数为需要归一化的一维vector、归一化后的最小值和最大值,返回值为归一化后的一维vector。首先,计算输入vector的最小值和最大值,然后对每个元素进行归一化处理。在归一化处理中,先将元素减去最小值,然后除以最大值和最小值的差,再乘以归一化后的范围,最后加上最小值即可得到归一化后的结果。
阅读全文