首页 > 解决方案 > 将双精度数组下采样到另一个长度

问题描述

我有一个在数组中提供许多(4096)双精度值的数据源。这些以高分辨率测量,是 FFT 的结果。出于可视化目的,需要减少它们。(这里不可能对原始信号重新应用 FFT。)我可以简单地平均每个n 个样本,并得到一个长度/ n值的结果数组。不过,为了更灵活地选择结果值的数量,我需要插值。

我在 Wikipedia 上查找了一些关于此的基本信息。我已经熟悉光栅图像编辑器中用户的 2D 下采样/插值。现在我需要在 C# 代码中进行 1D 处理。可以将其视为更改(减小)一维条形码图像的光栅图像大小,或重新采样音频波形文件。

我发现推荐的一个库是 Math.NET Numerics。这已经用于我的应用程序中的其他任务,所以我可以很容易地使用它。那里有CubicSpline课程,但我不知道如何使用它。

问:使用插值将 a 中的样本数量减少double[]到任意数量的方法是什么?

我对在另外两个之间找到一个双精度值不感兴趣。我需要将多个源值组合成一个单独的输出值,同时不会在组的边界丢失任何信息(具有极端水平的单个频率箱),并且如果数字不同,则不会因为组大小不同而产生混叠效应或舍入不可分割。

也许使用位图图像函数和 1*n 位图大小是一个很好的解决方案,而不是直接处理数学?但是,这将涉及大量数据转换,这会降低性能并且可能还会降低精度。或者来自自动处理领域的一些图书馆?

标签: c#.netmathinterpolation

解决方案


推荐阅读