Bilinear interpolation of gridded data
14 views (last 30 days)
Show older comments
I have GCM data for a region with grid size of 2.81 x 2.79 degree(lat x lon) where starting latitude range is 4.9 degree to 41 degree and longitude range is 59 degree to 110 degree. So i need to interpolate this data on a 2.5 X 2.5 degree with latitude range 5-40 degree and longitude range 60-100 degree. how do i use the meshgrid aND LOOPS to do the interpolation
2 Comments
Accepted Answer
darova
on 12 Sep 2019
Hi! This how i do this
clc,clear
load Variables.mat
[m,n,k] = size(predictor);
lon = linspace(59.06,120.93, m);
lat = linspace(4.18,40.46, n);
lon1 = 60:2.5:100; % new range
lat1 = 5: 2.5:40;
[LAT, LON] = meshgrid(lat,lon); % original mesh
[LAT1, LON1] = meshgrid(lat1,lon1); % new mesh
predictor1 = zeros([size(LAT1) k] ); % preallocation
for i = 1:k
pred = predictor(:,:,i);
predictor1(:,:,i) = interp2(LAT,LON,pred,LAT1,LON1);
end
% DRAW SOMETHING !
R = predictor(:,:,1);
R1 = predictor1(:,:,1);
s = pi/180;
[x,y,z] = sph2cart(LAT*s,LON*s,R);
[x1,y1,z1] = sph2cart(LAT1*s,LON1*s,R1);
%%
plot3(x,y,z,'b') % original data: blue lines
hold on
surf(x1,y1,z1) % interpolated data: color surface
hold off
axis equal
6 Comments
rakshanda showkat
on 2 Apr 2024
Hi, i am trying to do bias correction by quantile mapping, can you suggest how to do that?
More Answers (1)
Nicolas B.
on 11 Sep 2019
Hi,
may I recommand you to take a look at the function griddedInterpolant to solve your case? It will be definitely faster than a solution with loops.
Regards
3 Comments
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!