Я ищу элегантный способ использования ndgrid
и interpn
в более "общем" виде - в основном для любого заданного размера ввода, а не для обработки каждого ранга в отдельном случае.
Если исходные данные ND совпадают с сеткой ND, заданной в массиве ячеек 1D векторов для каждой координаты Mesh={[x1]; [x2]; ...; [xn]}
, и координаты запроса / вывода, заданные таким же образом (QueryMesh
), как мне сгенерировать ndgrid
матрицы и использовать их в interpn
без установки регистра для каждого измерения?
Кроме того, если есть лучший способ определения сетки - я более чем готов изменить.
Вот довольно очевидная, концептуальная (и НЕ РАБОТАЮЩАЯ) схема того, что я хочу получить, если неясно
Mesh={linspace(0,1,10); linspace(0,4,20); ... linsapce(0,10,15)};
QueryMesh={linspace(0,1,20); linspace(0,4,40); ... linsapce(0,10,30)};
Data=... (whatever)
NewData=InterpolateGeneric(Mesh,QueryMesh,Data);
function NewData=InterpolateGeneric(Mesh,QueryMesh,Data)
InGrid=ndgrid(Mesh{:});
OutGrid=ndgrid(QueryMesh{:});
NewData=interpn(InGrid{:},Data,OutGrid{:},'linear',0.0)
end