gpt4 book ai didi

c - 如何将 n 个元素的数组重新采样为 m 个元素的数组

转载 作者:行者123 更新时间:2023-12-01 12:54:02 26 4
gpt4 key购买 nike

我有一个包含 N 个测量值的数组,我应该将其显示为图表,但该图表只能有 M 个像素宽,并且只能按 M 个像素滚动。

虽然 M 是常数,但 N 可以是几十到几千之间的任何值。每次我需要显示图表时,我都知道 N 是什么,但是由于 N/M 可能不是整数,所以我想以某种方式补偿累积误差。

我在纯 C 中工作,不能使用任何数学库。

编辑 2:数据相对均匀,偶尔出现峰值,我不想在插值时错过这些峰值。

编辑 3:我正在寻找对任何 N(大于 M 和小于 M)都足够好的解决方案。

谢谢。

最佳答案

一个好的解决方案不是迭代输入样本,而是迭代输出位置。也就是说,您将始终恰好绘制 M 个像素。要计算第 i 个像素的最近样本值,请使用数组偏移量:

[(i*N+M/2)/M]

当然,仅使用最近的样本会产生非常混叠的结果(在 N 较大的情况下丢弃大部分样本)。如果您确定 N 将始终大于 M,一个好的但简单的方法是使用加权平均值对足够的相邻样本进行平均,这样每个样本都获得一个总权重为 1(端点的权重在相邻输出像素之间分配)。当然,您可以使用更精细的重采样算法,这些算法可能更合适(特别是如果您的数据类似于音频样本,在频域中更有意义),但对于具有严格内存和时钟周期要求的嵌入式设备,平均可能是您想要的方法。

关于c - 如何将 n 个元素的数组重新采样为 m 个元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10674594/

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