Bilinear interpolation of gridded data

14 visualizaciones (últimos 30 días)
Diljit Dutta
Diljit Dutta el 11 de Sept. de 2019
Comentada: rakshanda showkat el 2 de Abr. de 2024
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 comentarios
darova
darova el 11 de Sept. de 2019
Can you attach your data?
Diljit Dutta
Diljit Dutta el 12 de Sept. de 2019
here I have attached the tabular data of variables.. which is a 3D array of 23x14x3355. where 23 is number of longitudes from 59.06 - 120.93 degree with spacing of 2.81 degree and 14 is number of latitudes from 4.18 - 40.46 degree and 3355 is the time scale daily data for 3355 days. Now it is needed to be interpolated on 2.5 x 2.5 scale with longitude range 60-100 and latitude range 5-40 degree.

Iniciar sesión para comentar.

Respuesta aceptada

darova
darova el 12 de Sept. de 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 comentarios
darova
darova el 12 de Sept. de 2019
I know nothing about such correction. Sorry
rakshanda showkat
rakshanda showkat el 2 de Abr. de 2024
Hi, i am trying to do bias correction by quantile mapping, can you suggest how to do that?

Iniciar sesión para comentar.

Más respuestas (1)

Nicolas B.
Nicolas B. el 11 de Sept. de 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 comentarios
Nicolas B.
Nicolas B. el 12 de Sept. de 2019
Do you have any example of typical input data?
Diljit Dutta
Diljit Dutta el 12 de Sept. de 2019
here I have attached the tabular data of variables.. which is a 3D array of 23x14x3355. where 23 is number of longitudes from 59.06 - 120.93 degree with spacing of 2.81 degree and 14 is number of latitudes from 4.18 - 40.46 degree and 3355 is the time scale daily data for 3355 days. Now it is needed to be interpolated on 2.5 x 2.5 scale with longitude range 60-100 and latitude range 5-40 degree.

Iniciar sesión para comentar.

Categorías

Más información sobre Interpolation 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!

Translated by