C# 将双数组下采样到另一个长度

C# 将双数组下采样到另一个长度,c#,.net,math,interpolation,C#,.net,Math,Interpolation,我有一个数据源,它在一个数组中提供许多(4096)个双值。这些是以高分辨率测量的,是FFT的结果。为了可视化的目的,它们需要减少。(这里不可能对原始信号重新应用FFT。)我可以简单地平均每个n个样本,并得到一个长度/n值的结果数组。为了更灵活地选择结果值的数量,我需要插值 我在维基百科上查到了一些关于这个的基本信息。我已经熟悉光栅图像编辑器中从用户角度进行的二维下采样/插值。现在我需要这个一维的C代码。可以将其视为更改(减小)1D条形码图像的光栅图像大小,或对音频波形文件重新采样 我发现推荐的一

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

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

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

Q:使用插值将
double[]
中的样本数减少为任意数的方法是什么

我对在其他两个值之间找到一个双值不感兴趣。我需要将多个源值组合成单个输出值,同时不丢失组边界处的任何信息(具有极端级别的单频箱),如果数字不可分割,则不会因组大小不同而产生锯齿效应或舍入


也许使用位图图像函数和1*n位图大小是一个很好的解决方案,而不是直接处理数学?不过,这将涉及大量数据转换,这会降低性能,可能还会降低精度。或者autio处理字段中的某个库?

有很多方法可以对数据进行下采样,最好的方法通常取决于要进行下采样的数据的特征。然而,该算法对于显示的下采样通常是有效的。请参阅示例实现,但您可以在谷歌上搜索其他内容。@MatthewWatson谢谢,本文非常理论化,我无法在代码中应用它。我编辑了我的问题,以便更好地解释我在做什么。我误读了你的评论,发现你给出的示例实现提供了合理的结果。我可能会在实现中使用
double
,而不是
float
。我想你可能已经改变了这一点。有很多方法可以对数据进行下采样,而最好的方法往往取决于要进行下采样的数据的特征。然而,该算法对于显示的下采样通常是有效的。请参阅示例实现,但您可以在谷歌上搜索其他内容。@MatthewWatson谢谢,本文非常理论化,我无法在代码中应用它。我编辑了我的问题,以便更好地解释我在做什么。我误读了你的评论,发现你给出的示例实现提供了合理的结果。我可能会在实现中使用
double
,而不是
float
。我想你可能已经改变了。