2 views (last 30 days)

Show older comments

I have 4 column matrix, which include irregular time, temperature, latitude and longitude. I want to creat 3-D matrix such that I have hourly averages of temperature within particular latitude and longitude grid. Thereby producing a 3D matrix of latitude x longitude x hourly averaged temperature.

Please find the attached dataset.

Thanks in advance!

dpb
on 25 Jul 2021

Edited: dpb
on 25 Jul 2021

rowfun to the rescue yet again... :)

tData=readtable();

longrid=-180:10:180;

latgrid=-90:10:90;

[~,~,~,tData.lon_g,tData.lat_g]=histcounts2(tData.lon,tData.lat,longrid,latgrid);

tGroup=rowfun(@mean,tData,'InputVariables','temp', ...

'GroupingVariables',{'hour','lon_g','lat_g'}, ...

'OutputVariableNames','temp');

produces:

>> [head(tGroup,5);tail(tGroup,5)]

ans =

10×5 table

hour lon_g lat_g GroupCount temp

____ _____ _____ __________ ______

0 2 14 1 89.94

0 3 5 1 99.68

0 3 7 1 87.31

0 3 9 1 100.86

0 3 15 1 71.35

23 35 14 2 89.96

23 35 15 1 101.81

23 35 16 1 107.89

23 35 18 1 101.6

23 36 9 1 91.3

>>

dpb
on 26 Jul 2021

Well, that's not the Answer of the link... <VBG>

Then see

doc xcorr2

It's in Signal Processing TB

KSSV
on 25 Jul 2021

T = readtable('New Text document.txt') ;

t = T.hour ;

lon = T.lon ;

lat = T.lat ;

temp = T.temp ;

[c,ia,ib] = unique(t) ;

n = length(c) ;

iwant = cell(n,1) ;

for i = 1:n

iwant{i} = [t(ib==i) lon(ib==i) lat(ib==i) temp(ib==i)] ;

end

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

Start Hunting!