c++ 实现matlab normalize
时间: 2023-08-04 09:07:18 浏览: 45
在Matlab中,normalize函数可用于将向量或矩阵的元素归一化为指定的范围。在C++中,可以使用类似的方法实现Matlab中normalize函数的功能。下面是一个简单的实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 定义normalize函数
template<typename T>
void normalize(std::vector<T>& v, T low, T high) {
// 获取最小值和最大值
auto minmax = std::minmax_element(v.begin(), v.end());
T min = *minmax.first;
T max = *minmax.second;
// 归一化
for(auto& i : v) {
i = (i - min) / (max - min) * (high - low) + low;
}
}
int main() {
std::vector<double> v = {1.0, 2.0, 3.0, 4.0, 5.0};
std::cout << "Original vector: ";
for(auto i : v) {
std::cout << i << " ";
}
std::cout << std::endl;
// 归一化到0到1的范围内
normalize(v, 0.0, 1.0);
std::cout << "Normalized vector: ";
for(auto i : v) {
std::cout << i << " ";
}
std::cout << std::endl;
// 归一化到-1到1的范围内
normalize(v, -1.0, 1.0);
std::cout << "Normalized vector: ";
for(auto i : v) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
运行结果如下:
```
Original vector: 1 2 3 4 5
Normalized vector: 0 0.25 0.5 0.75 1
Normalized vector: -1 -0.5 0 0.5 1
```
在上述代码中,我们定义了一个normalize函数,它接受一个vector和两个范围参数。该函数首先获取vector中的最小值和最大值,然后将vector中的每个元素归一化到指定的范围内。最后,我们在main函数中演示了如何使用normalize函数将vector归一化到不同的范围内。