Получить значение из массива, используя любой заданный т - PullRequest
0 голосов
/ 01 февраля 2011

То, что я пытаюсь сделать, - это иметь возможность поместить некоторые значения в массив, а затем, основываясь на (0-1), получить значение из массива на основе его сохраненных значений.

Чтобы сделать это более понятным, вот пример:

Значения массива = [0, 10]

Теперь этот массив будет возвращать значение 0 для t = 1 и значение 10 для t = 1.Таким образом, t = .3 даст значение 3.

Другой пример:

Значения массива = [10, 5, 5, 35]

t=.25 will give a value of 5
t=.125 will give a value of 7.5

Я смотрюдля наиболее эффективной формулы для получения значения при любом заданном значении t с использованием данного массива.

В настоящее время я использую это (псевдокод)

var t:Number = .25;
var values:Array = [10, 5, 5, 35];

if(t == 1) value = [values.length-1];
else
var offset:Number = 1/values.length;
var startIndex:int = int(t/offset);
var fraction:Number = t % offset;
var roundPart:Number = (values[startIndex+1] - values[startIndex]) * fraction;

var value:Number = values[startIndex] + roundPart;

Но я уверен, чтогораздо лучший способ сделать это.Поэтому я призываю математиков здесь!

1 Ответ

0 голосов
/ 01 февраля 2011

Вот один вкладыш в Mathematica.Он делает то же, что и вы, только немного более компактный.

Индексы массивов начинаются с 1.

values = {10, 5, 5, 35, 0}
f[a_, x_] := a[[k = IntegerPart[(k1 = (Dimensions[a][[1]] - 2) x)] + 1]] + 
             FractionalPart[k1] (a[[k + 1]] - a[[k]])  

Таким образом, ваш результат интерполяции:

In[198]:= f[values,1]
Out[198]= 35

И т.д.Если вы строите график изменения масштаба x:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...