【问题标题】:Interpolating a smaller array into a larger array and vice versa将较小的数组内插到较大的数组中,反之亦然
【发布时间】:2018-10-05 02:17:00
【问题描述】:

我正在寻找一种将较大数组中的数据插入较小数组或反之亦然的方法?

例如,如果我有一个包含 137 个数据元素的数组,并且我想将该数据调整为包含 2000 个元素的数组。同时,我想插入 137 个值,以便它们均匀地适合新数组中的 2000 个元素。因此,我需要某种插值/采样机制,有点像以任意方式调整图像大小。

有没有人有算法可以做到这一点?

非常感谢,

达米安

【问题讨论】:

  • 目前存在可能算法...还有等待设计的算法。但是我们怎么知道哪一个适合您的实际需要呢?就像图像一样...您可以通过将所有内容留空来调整大小,或尝试拉伸图片等。就目前而言,我认为这个问题太宽泛,不适合 Stack Overflow。
  • 创建柏林噪声的算法可能对您有用。它确实符合您的(非常广泛的)描述。您需要做的就是将其从 2D 简化为 1D。 en.wikipedia.org/wiki/Perlin_noise#Algorithm_detail
  • 最简单的是线性插值。但也许您需要样条曲线或其他平滑算法。您没有指定任何要求。
  • 感谢到目前为止的回答,抱歉,我应该更具体地了解插值的性质。我不追求任何超级聪明的东西,所以真的只是一个简单的线性插值就可以了。我正在考虑调整图像大小而不进行任何平滑处理,因为这对我的应用程序来说不是必需的。

标签: c# .net


【解决方案1】:

我找到并改编了这段代码:

void Interpolate(float[] destination, int destFrom, int destTo, float valueFrom, float valueTo)
    {
        int destLength = destTo - destFrom;
        float valueLength = valueTo - valueFrom;
        for (int i = 0; i <= destLength; i++)
            destination[destFrom + i] = valueFrom + (valueLength * i) / destLength;
    }

非常适合我的需求。

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多