3 views (last 30 days)

Show older comments

Hello,

I have two grid, one that is 121x97 (lat_1 & lon_1 in the attached data) and the other is 6x7 (coarser grid, lat_2 & lon_2 in the attached data). I have attached the longitudes and latitudes of the grid cells here. I am trying to find a method (fairly uncomplicated) to find exactly which grid cells of the finer grid are found in each of the coarser grids. I would then like to find their means so that the finer grid now becomes a 6x7 matrix of means from the finer grid.

I am not sure how to use the lat and lon values to find the means. For instance, if one of the coarse grid cells overlaps over 30 finer grid cells, I would like to get the mean of those 30 grid cells.

Hope this makes sense.

Image Analyst
on 1 May 2016

Image Analyst
on 2 May 2016

lat_1: [97x1 double]

lon_1: [121x1 double]

lat_2: [7x1 double]

lon_2: [6x1 double]

These are all different sizes. How are you plotting or visualizing these? Does it require the mapping toolbox (which I don't have)?

Chad Greene
on 2 May 2016

I think this does what you want:

% Load sample data and create a sample Z1:

load sample_data

Z1 = round(100*(cosd((1:length(lat_1))'))*cosd(1:length(lon_1)));

% Get rows and columns:

r = interp1(lat_2,1:numel(lat_2),lat_1,'nearest','extrap');

c = interp1(lon_2,1:numel(lon_2),lon_1,'nearest','extrap');

[cg,rg] = meshgrid(c,r);

% Create a downsampled version of Z1 with accumarray:

Z1ds = accumarray([rg(:) cg(:)],Z1(:),[length(lat_2) length(lon_2)],@mean,NaN);

% Plot Z1 and downsampled Z1:

figure

subplot(1,2,1)

imagesc(lon_1,lat_1,Z1)

axis xy

subplot(1,2,2)

imagesc(lon_2,lat_2,Z1ds)

axis xy

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

Start Hunting!