# Bilinear interpolation of gridded data

7 ビュー (過去 30 日間)
Diljit Dutta 2019 年 9 月 11 日
コメント済み: rakshanda showkat 2024 年 4 月 2 日
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 件のコメントなしを表示なしを非表示
darova 2019 年 9 月 11 日
Diljit Dutta 2019 年 9 月 12 日
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.

サインインしてコメントする。

### 採用された回答

darova 2019 年 9 月 12 日
Hi! This how i do this
clc,clear
[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 件のコメント4 件の古いコメントを表示4 件の古いコメントを非表示
darova 2019 年 9 月 12 日
I know nothing about such correction. Sorry
rakshanda showkat 2024 年 4 月 2 日
Hi, i am trying to do bias correction by quantile mapping, can you suggest how to do that?

サインインしてコメントする。

### その他の回答 (1 件)

Nicolas B. 2019 年 9 月 11 日
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 件のコメント1 件の古いコメントを表示1 件の古いコメントを非表示
Nicolas B. 2019 年 9 月 12 日
Do you have any example of typical input data?
Diljit Dutta 2019 年 9 月 12 日
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.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeVector and Raster Map Display についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by