Интерполировать по указанной оси в MATLAB - PullRequest
0 голосов
/ 09 декабря 2018

У меня n-мерная матрица, funtointerpolate, и я хочу выполнить одномерную интерполяцию вдоль одной из ее осей (назовем ее осью m).В Python функции интерполяции, такие как interp1d, позволяют указать ось интерполяции.В MATLAB я не вижу очевидного способа сделать это, используя interp1 или любые другие встроенные функции интерполяции.В идеале функция должна выглядеть примерно так:

interpolatedfun = interp1(funtointerpolate,oldpoints,newpoints,axis = m)

Очевидный способ обойти это - перебрать все остальные оси в funtointerpolate, но это довольно громоздко.Мотивация для интерполяции состоит в том, что данные в funtointerpolate оцениваются по неоднородной сетке вдоль оси m.Мне нужно, чтобы оно было равномерным по m.Математически, предположим, у меня есть некоторый тензорный объект

A_{ijk}

, который оценивается по неоднородной сетке вдоль индекса j.Затем я хочу найти новый A такой, чтобы j-й индекс состоял из значений, вычисленных на равномерной сетке.Я знаю новую равномерную сетку для j-го индекса newpoints и старую сетку oldpoints.

1 Ответ

0 голосов
/ 09 декабря 2018

Вы можете использовать функцию interpn для этой цели:

newV = interpn(oldAx1, ..., oldAxM, ..., oldAxN, oldV, ...
               oldAx1, ..., newAxM, ..., oldAxN);

, где V - ваш вывод.

(Конечно, вышеизложенноепсевдокод, но он должен хорошо иллюстрировать способ решения вашей проблемы.)

...