File Exchange

image thumbnail

3D Linear Interpolation for GPU

version 1.2.0.0 (1.43 KB) by Philip
3D Linear Interpolation for GPU

4 Downloads

Updated 05 Aug 2014

View License

This function is faster than MATLAB's griddedInterpolant function for the CPU, but slower than MATLAB's interpn function for the GPU. However, I've coded this using arrayfun. Since MATLAB does not support using interpn in arrayfun, this function should be helpful to those who wish to do interpolation inside more complex code executing on the GPU using arrayfun. I tried making this code as fast as possible, but I cannot match the speed of interpn. Any suggestions for improvements would be greatly appreciated.
Note that this function assumes the data to be interpolated does not go off the grid and the grid is uniformly spaced in each dimension. The syntax is exactly like interpn, i.e.
Vi=interpn(x1,x2,x3,V,x1i,x2i,x3i);
Vi=interp3gpu(x1,x2,x3,V,x1i,x2i,x3i);
should produce the same result. If your data are gpuArrays, then interp3gpu will execute on your GPU. Otherwise it will execute on your CPU.

Comments and Ratings (0)

Updates

1.2.0.0

Updated description.

1.1.0.0

Updated code to make it faster and use less memory.

MATLAB Release Compatibility
Created with R2014a
Compatible with any release
Platform Compatibility
Windows macOS Linux