Find mean value of grid cells found within a coarser grid cell
3 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
回答(2 个)
Image Analyst
2016-5-1
Do you have a digital image, and can you somehow map lats and lons to actual rows and columns in the digital image? If you have that, then you can simply use blockproc.
4 个评论
Image Analyst
2016-5-2
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
2016-5-2
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/174229/image.png)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!