All
Я ДУМАЮ , что я ищу функцию для трилинейной интерполяции.
Вот подробности:
У меня есть трехмерный набор данных:
- Размер 1 варьируется от 0 до 100 с шагом 5
- Размер 2 варьируется от 0 до 100 с шагом 5
- Размер 3 варьируется от 0 до 1 с шагом 0,1
Итак, у меня 4851 общее значение (21 х 21 х 11).
Если мне нужно найти значение для (10, 25, 0.3) - это легко - я могу просто посмотреть его в 3-мерном массиве.
Но мне нужно иметь возможность придумать наилучшее приближение , учитывая размерные значения (17,48,0.73), например.
Итак, я думаю , что то, что я ищу, - это трилинейная интерполяция (хотя я определенно буду признателен за любые предложения по лучшему методу или намек, что я вообще не на ту тему ...)
Быстрый поиск в Google приводит к следующей формуле:
Vxyz =
V000(1-x)(1-y)(1-z) +
V100x(1-y)(1-z) +
V010(1-x)y(1-z) +
V001(1-x)(1-y)z +
V101x(1-y)z +
V011(1-x)yz +
V110xy(1-z) +
V111xyz
Что похоже на то, что я ищу, но я не уверен, что представляют x, y и z. Если бы мне пришлось угадывать, x - это отношение - расстояние от моего «целевого» значения первого измерения до ближайших двух значений, которые у меня есть, y - это отношение для второго измерения, а z - это отношение для третьего измерения.
Конечно, поскольку я не знаю, о чем говорю, я не знаю, правильно это или неправильно.
Итак, в идеале, я бы хотел немного Javascript или псевдокода, который показывает, как именно это сделать.
Заранее большое спасибо!