MATLAB: Resampling non-uniformly sampled 2D Surface

2dresamplingsurface

I have a 2D surface that is created from orthographic transformation of uniformly sampled surface in latitude/longitude coordinates. So, the transformed surface is non-uniformly sampled in orthographic coordinates (x, y). I would like to resample it to a specific uniform resolution in the orthographic axes.
Is there a function that can do this?

Best Answer

Not a single function, however there are a group of functions that used in concert can do it.
Try this example:
x = sort(rand(1, 10))*10; % Latitude Vector
y = sort(rand(1, 12))*10; % Longitude Vector
[X,Y] = meshgrid(x, y); % Create Matrices

Z = sin(X*pi/2) .* cos(Y*pi/2); % Create Matrices
figure
surf(x, y, Z)
xlabel('x')
ylabel('y')
zlabel('Z')
title('Surface With Non-Uniform Grid Spacing')
xv = linspace(min(x), max(x), 40); % Create New Uniformly-Spaced Vector From Original ‘x’
yv = linspace(min(y), max(y), 50); % Create New Uniformly-Spaced Vector Vector From Original ‘y’
[Xq,Yq] = ndgrid(xv, yv); % Create Interpolation Matrices With Uniform Grid Spacing
Zq = griddata(X(:),Y(:),Z(:), Xq, Yq, 'natural'); % Interpolate Matrices To New Regular Grid
figure
surf(Xq, Yq, Zq)
xlabel('Xq')
ylabel('Yq')
zlabel('Zq')
title('Interpolated Surface With Uniform Grid Spacing')
.
Related Question