Интерполяция и производная 3D-данных в MATLAB (или Python или C)

У меня есть три трехмерные матрицы X, Y и Z, которые определяют матрицу V того же размера в некоторых трехмерных пространствах. Матрицы расположены регулярно. Теперь я пытаюсь выполнить интерполяцию, а также вычислить пространственные частные производные V, то есть для каждого пикселя вычислить, как V изменяется с x, y и z. Я читал, что интерполяция и вычисление производных с помощью сплайнов приводит к хорошим результатам. Например, я раньше работал со splinefit и ppdiff (http://www.mathworks.com/matlabcentral/fileexchange/13812-splinefit)

Как я могу использовать сплайны для имеющихся у меня наборов данных? Есть ли какой-нибудь код, доступный предпочтительно в MATLAB (Python и C также могут работать) для выполнения таких вычислений?

Предполагая, что я хочу, чтобы производные в точках выборки определялись только X, Y и Z, могу ли я выполнить аппроксимацию одномерного сплайна для каждого измерения и таким образом вычислить частные производные? Может быть, это должен быть вопрос для математического обмена. Вероятно, это займет некоторое время, но это должно сработать, верно?

Спасибо за вашу помощь!


person Damian    schedule 29.01.2013    source источник


Ответы (1)


попробуйте использовать interp3, функцию интерполяции трехмерных данных Matlab, которая поддерживает «сплайн», а также другие методы. Дополнительная информация в документации...

person bla    schedule 29.01.2013
comment
Я использовал это раньше, но это не помогает с дифференциацией, если я не интерполирую, не выполняю градиент и, возможно, фильтр нижних частот результатов. - person Damian; 29.01.2013
comment
Как и при любой дифференциации реальных данных, вам всегда нужно сгладить их с помощью какого-то фильтра и/или интерполяции, прежде чем брать производную или градиент, это также верно в 1D, так в чем собственно вопрос? как взять производную в 3D-массиве? - person bla; 29.01.2013
comment
Теперь, когда вы упомянули об этом, это щелкнуло в моей голове. Я просто пытался найти лучший подход для вычисления производной, чем простые разности. Эта функция splinefit вычисляет приближение сплайна, а затем выполняет аналитическую производную, если я не ошибаюсь. Это может быть эквивалентно интерполяции со сплайном, дифференциации с первыми различиями и фильтрации нижних частот на выходе, верно? - person Damian; 29.01.2013