[siz,V,M,X1,X2,X3,...] = VGRID(v,x1,x2,x3,...) expands the inputs x1,x2,x3,... using meshgrid such that e.g. reshape(trapz(V,Xi),siz) is the same size as xi if xi is N-D. Use vgrid to help make your code more vectorized.
Input v is a vector. For each non-scalar xi, vgrid returns [Xi, M] = meshgrid(xi, v). Xi = xi for scalar xi.
Example: Numerically integrate the position of an object with various acceleration and starting velocity (without for loops).
time = 0:.1:3; % Seconds.
[v0,acceleration] = meshgrid(0:4,4:2:16); % Units: m/s and m/s^2.
[siz,timeVector,TimeGrid,V0,Acceleration] = VGRID(time,v0,acceleration);
velocity = V0 + Acceleration.*TimeGrid;
distance = trapz(timeVector,velocity);
distance = reshape(distance,siz);
Sky Sartorius (2019). VGRID: utility to help vectorize code (https://www.mathworks.com/matlabcentral/fileexchange/56529-vgrid-utility-to-help-vectorize-code), MATLAB Central File Exchange. Retrieved .
Inspired by: Simpson's rule for numerical integration