Implicit expansion for griddedInterpolant
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Manuel Deuerling
el 9 de Nov. de 2023
Comentada: Bruno Luong
el 9 de Nov. de 2023
Hello,
I have to do a lot of interpolation on one data set and already found that griddedInterpolant is way faster than interp2;
It also allows element wise operation if two tensors of the same size are provided. As these are very big in my case, but repeat in some dimensions, I am wondering if something like implicit expansion (I hope I am using the correct terms here) can be used to speed up the code. Because for other functions using repmat is not advised.
Here I provide a minimum working example to show how I currently do it. Commented out are ways that I wish were possible to speed up the code but I can't get to run.
[X,Y] = ndgrid(0:10);
Z = rand([11,11]);
J = griddedInterpolant(X,Y,Z);
xq = sort(rand([4 1 3])*10);
yq = sort(rand([1 3 3])*10);
zq = J(repmat(xq,1,length(yq),1),repmat(yq,length(xq),1,1));
% zq = J(xq,yq); %implicit expansion?
% zq = bsxfun(@J,xq,yq);
% zq=J({xq,yq}) %Matt J's suggestion
If you have any input ( that can be generalized to different sizes of grids and lookups etc) I would be really thankful!
edit: changed xq, yq in the eaxmple to higher tensor to represent my problem more accurately
0 comentarios
Respuesta aceptada
Matt J
el 9 de Nov. de 2023
zq=J({xq,yq})
5 comentarios
Bruno Luong
el 9 de Nov. de 2023
Not too much messy with 4+D
zq = zeros(max(size(xq),size(yq)));
for k=1:size(zq(:,:,:),3)
zq(:,:,k) = J({squeeze(xq(:,:,k)),squeeze(yq(:,:,k))});
end
Más respuestas (1)
Bruno Luong
el 9 de Nov. de 2023
You can do your own extension as showed here
2 comentarios
Bruno Luong
el 9 de Nov. de 2023
It's probably depends on the size of your data. The strip down version like the one in this thread might beat TMW generic implementation.
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!