c# - 将双精度数组下采样到另一个长度
问题描述
我有一个在数组中提供许多(4096)双精度值的数据源。这些以高分辨率测量,是 FFT 的结果。出于可视化目的,需要减少它们。(这里不可能对原始信号重新应用 FFT。)我可以简单地平均每个n 个样本,并得到一个长度/ n值的结果数组。不过,为了更灵活地选择结果值的数量,我需要插值。
我在 Wikipedia 上查找了一些关于此的基本信息。我已经熟悉光栅图像编辑器中用户的 2D 下采样/插值。现在我需要在 C# 代码中进行 1D 处理。可以将其视为更改(减小)一维条形码图像的光栅图像大小,或重新采样音频波形文件。
我发现推荐的一个库是 Math.NET Numerics。这已经用于我的应用程序中的其他任务,所以我可以很容易地使用它。那里有CubicSpline
课程,但我不知道如何使用它。
问:使用插值将 a 中的样本数量减少double[]
到任意数量的方法是什么?
我对在另外两个之间找到一个双精度值不感兴趣。我需要将多个源值组合成一个单独的输出值,同时不会在组的边界丢失任何信息(具有极端水平的单个频率箱),并且如果数字不同,则不会因为组大小不同而产生混叠效应或舍入不可分割。
也许使用位图图像函数和 1*n 位图大小是一个很好的解决方案,而不是直接处理数学?但是,这将涉及大量数据转换,这会降低性能并且可能还会降低精度。或者来自自动处理领域的一些图书馆?
解决方案
推荐阅读
- android - onBillingSetupFinished 未调用
- flutter - 如何从扫描的照片中选择文本?
- r - 如何在 r 闪亮的应用程序中使用 {gtsummary} 包
- python - 如何在烧瓶中获得连接的客户端
- sql - 在 T-SQL 中构建 HR 数据集,需要行开始日期列和行结束日期列
- c - ClangFormat 参数和参数 binpacking 设置未按预期工作
- css - Css 属性在两个反应组件之间发生冲突
- c - 为什么即使输入大于给定的数字类型,scanf 也会返回正值?
- php - PHP stdClass 对象 - foreach
- javascript - TypeError:无法读取未定义 Discord、js 的属性“执行”