gpt4 book ai didi

c++ - 将较小数组中的值缩放到较大数组中

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:58 24 4
gpt4 key购买 nike

我有一个数组,它的大小是 256。这个数组的元素在 0 到 1 的范围内。现在,我需要一个大小应为 65536 的数组,其中每个元素都应从包含 256 个值的原始数组进行插值或缩放。我在另一个线程中问过,但我不够清楚:(

某种映射,比方说,原始图像中的 10 个值应该与更大数组中的更多数值相匹配。可行吗?

编辑:假设我有一个包含 256 个 float 的数组,每个 float 都在 0 到 1 的范围内。现在,我需要一个新数组,它应该是 65536 个 float ,每个 float 在 0 到 1 范围内。这些新的浮点值应该从原始的 256 个 float 进行插值或缩放。

最佳答案

免责声明:最近我的 C++ 不太好。这看起来更像 Java。我假设您无论如何都不打算复制和粘贴:了解算法比实现语言重要得多。

以下算法不会为 256 个条目输入生成 65536 个条目。相反,它是 65281。这样做的原因是您需要从某物扩展到另一物。考虑一个有 256 个柱子的栅栏。您将只有 255 个栅栏部分。每个缩放比例对应一段围栏。对于简单的数学运算,我使每个原始样本之间的样本数等于原始样本数。所以如果你输入一个 4 条目,你将得到一个 13 条目的输出。 100 个条目的输入将产生 9901 个条目的输出。

尽情享受吧!

std::vector<double> sample(std::vector<double> orig) {

std::vector<double> result(orig.size() * (orig.size() - 1) + 1);

/* for each value, make that many values scaled between this and the last piece */
for(int i = 0; i < orig.size() - 1; i++) {
double last = orig[i];
double curr = orig[i+1];
double diff = curr - last;
double step = diff / orig.size();
int offset = i * orig.size();
for(int j = 0; j < orig.size(); j++) {
result[offset + j] = last + (step * j);
}
}
result[result.size() - 1] = orig[orig.size() - 1];
return result;
}

关于c++ - 将较小数组中的值缩放到较大数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com