Интерполяция в Java: отображение случайного числа из одного диапазона в другой - PullRequest
1 голос
/ 09 ноября 2019

Я сгенерировал число z из диапазона (x, y) и хочу отобразить z в другой диапазон (p, q)

Похоже, что на этот вопрос здесь дан ответ с помощью matlab:

https://www.mathworks.com/matlabcentral/answers/379380-mapping-of-a-random-number-in-one-range-to-another-range

Мне нужно сделать это в Java, но также нужно понять, что делает этот 'interp1'.

Ответы [ 3 ]

1 голос
/ 09 ноября 2019

Насколько я понимаю, вы ищете эту vq = interp1(x,v,xq) особую функцию в Matlab. x - исходный диапазон, v - исходное значение (одно или несколько), xq - новый диапазон.

Matlab заявляет, что «vq = interp1 (x, v, xq) возвращает интерполированные значения 1-D функции в определенных точках запроса, используя линейную интерполяцию ."

Wikiо Линейная интерполяция , это в основном то, что вы пытаетесь реализовать, отображая число из одного диапазона в другой.

Я обнаружил, что это, вероятно, решит вашу проблему, проверьте это. Отображение числового диапазона на другой

1 голос
/ 09 ноября 2019

interp1, с методом «линейной» интерполяции по умолчанию, используется прямая линия, которая проходит через точки (x, p) и (y, q), чтобы найти Y-координату точки с координатой X, равной z.

static double interp1(double x, double y, double p, double q, double z) {
  return p + (q - p) * (z - x) / (y - x);
}
1 голос
/ 09 ноября 2019

Apache commons-math имеет несколько доступных интерполяторов:

https://commons.apache.org/proper/commons-math/javadocs/api-3.0/org/apache/commons/math3/analysis/interpolation/package-summary.html

Существует также легкодоступная документация для функции interlap для matlab, если вы просто хотите узнать больше о том, на что она способна:

https://www.mathworks.com/help/matlab/ref/interp1.html

...