gpt4 book ai didi

ruby - 有效地处理数字数组的 "scale"或 "resize"的算法(音频重采样)

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:44 24 4
gpt4 key购买 nike

做音频处理(虽然它也可以是图像处理)我有一个一维数字数组。 (它们恰好是代表音频样本的 16 位有符号整数,这个问题同样适用于 float 或不同大小的整数。)

为了匹配不同频率的音频(例如,将 44.1kHz 样本与 22kHz 样本混合),我需要拉伸(stretch)或压缩值数组以满足特定长度。

将数组减半很简单:每隔一个样本丢弃一次。

[231, 8143, 16341, 2000, -9352, ...] => [231, 16341, -9352, ...]

将数组宽度加倍稍微不那么简单:将每个条目加倍(或可选地在相邻的“真实”样本之间执行一些插值)。

[231, 8143, 16341, 2000, -9352, ...] => [231, 4187, 8143, 12242, 16341, ...]

我想要的是一种高效、简单的算法,可以处理任何比例因子,并且(理想情况下)可选择地支持在此过程中执行一种或另一种插值。

我的用例恰好是使用 Ruby 数组,但我很乐意接受大多数任何语言或伪代码的回答。

最佳答案

您正在寻找的数组/矩阵数学功能通常可以在“科学计算”库中找到。 NArray可能是开始学习 Ruby 的好地方。

关于ruby - 有效地处理数字数组的 "scale"或 "resize"的算法(音频重采样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413152/

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