Интерполировать немонотонно дискретизированный массив ND вдоль одного измерения
У меня есть 3D-объем (80x80x3 точек) измеренных значений ([646 2] значений и временных точек). Эти данные не упорядочены, и время между выборочными временными точками не равноудалено. Я хотел бы сделать повторную выборку / интерполяцию, чтобы иметь меньше временных точек (скажем, интервал [0:0,1:1]). Все данные вместе становятся массивом [80 80 3 646 2], где [:::: 2] - время, к которому я хотел бы интерполировать.
Моя первая попытка была с interp1, но приведенные ниже ответы уже помогли мне в дальнейшем, и теперь проблема, в которой я еще не уверен, заключается в том, как интерполировать время, когда его вид делится своим измерением со значением измерения? Я имею в виду [:::: 1] - значения, а [:::: 2] - временные точки.
1 ответ
Решение
% suppose your original matrix ranges from 1:80,1:80,1:3,1:646
[x,y,z,t] = ndgrid(1:1:80,1:1:80,1:1:3,1:646);
% and you want to interpolate in finer constructed grids with interval of 0.1
[xi,yi,zi,ti] = ndgrid(1:0.1:80,1:0.1:80,1:0.1:3,1:0.1:646);
% v is your original matrix measurement matrix, vi is the interpolation
vi = interpn(x,y,z,t,v,xi,yi,zi,ti,'spline');