c++ 对vector<float>做线性插值
时间: 2023-07-18 11:49:28 浏览: 238
2.1.6 C++和C#数据传递 -vectorofvectorofInt传递
可以使用以下代码对`vector<float>`进行线性插值:
```c++
#include <vector>
std::vector<float> linear_interpolation(const std::vector<float>& input, const int num_output)
{
std::vector<float> output(num_output);
const float step = static_cast<float>(input.size() - 1) / (num_output - 1);
for (int i = 0; i < num_output; ++i)
{
const float idx = i * step;
const int idx0 = static_cast<int>(idx);
const int idx1 = std::min(idx0 + 1, static_cast<int>(input.size()) - 1);
const float t = idx - idx0;
output[i] = (1 - t) * input[idx0] + t * input[idx1];
}
return output;
}
```
其中,`input`为原始数据,`num_output`为插值后的数据数量。函数返回插值后的数据。
阅读全文