c# - C# 以采样率 x 通过 n 个数字有效地线性插值
问题描述
我有一个锯齿状浮点数组块float[][] chunks
(例如,如果n = 3chunks[0]
并且{1f, 5f, 10f}
假设 x = 12,我想要:
1.0000
1.7273
2.4545
3.1818
3.9091
4.6364
5.4545
6.3636
7.2727
8.1818
9.0909
10.0000
我找到了一种使用 library 的方法MathNet.Numerics
,但它非常低效。我的代码如下。
double[] d = new double[n];
d[0] = 1d;
for (int i = 1; i < d.Length; i++)
d[i] = d[i - 1] + (double)(x - 1)/(double)(n - 1);
for (int c = 0; c < chunks.Length; c++)
for (int j = 0; j < x; j++)
doubles.Add(Convert.ToSingle(Interpolate.Linear(d, chunks[c].Select(y => Convert.ToDouble(y))).Interpolate(j + 1)));
然后我将其解析回List<double>
锯齿状数组。该代码基本上模仿了用于插值的 2d 平面,而不仅仅是对数字本身进行插值(至少我认为)。MathNet.Numerics.Interpolate.Linear()
需要两个双数组,这是我设法获得正确结果的唯一方法。然而,这需要永远。有一个更好的方法吗?
解决方案
推荐阅读
- python - How can I search a regex using a list of strings?
- html - 如何使某些文本与其他文本重叠而没有绝对位置
- c++ - 在 C++ linux 中重新启动子进程的程序
- android - 需要采取的行动:确保您的广告针对您应用的目标受众进行了适当的设置
- c# - C# 使用复选框并生成这样的密码的好习惯?
- php - 使用 php 从数据库中选择的问题
- javascript - 尝试根据以下内容动态替换 url &option 值按钮
- php - 使用 PDO 创建表
- c# - 打开计算机后连接的 C# 问题
- javascript - 在承诺链中传递数组