How to create 3D matrix from geographic coordinates?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello guys!
I was trying to figure out how to find the solution for this issue, however I can't find the answer and I would like to ask for the workaround.
I have 5 daily measures of wind (zonal wind) at 2550 sampling points with known geographic coordinates. In order to perform an analysis, I need to create a 3D matrix of this dimensions: ~51 x ~50 x 5.
The spatial order of the data (wind measured in 5 days) should be according to the latitude and longitude data of the sampling points, which corresponds to ~51 rows x ~50 columns (2550 sampling points). The approximately sign at rows and columns is because I don't know the exact distributions of the grid, but I assume that would be more or less in such a way. Sorry for the above.
I attach to this message the files of latitude and longitude (lat and lon, respectively), as well as the wind data.
I really appreciate your support.
Miguel
0 Commenti
Risposte (1)
KSSV
il 4 Ott 2017
load lon.mat ;
load lat.mat ;
load data.mat ;
plot(lon,lat,'.r')
nx = 51 ; ny = 50 ; nt = size(data,2) ;
x = linspace(min(lon),max(lon),nx) ;
y = linspace(min(lat),max(lat),ny) ;
[X,Y] = meshgrid(x,y) ;
wind = zeros(ny,nx,nt) ;
for i = 1:nt
F = scatteredInterpolant(lon,lat,data(:,i)) ;
wind(:,:,i) = F(X,Y) ;
end
3 Commenti
KSSV
il 5 Ott 2017
scatteredInterpolant is introduced in 2013a. I think you are using a lower version then this. Try griddata.
load lon.mat ;
load lat.mat ;
load data.mat ;
plot(lon,lat,'.r')
nx = 51 ; ny = 50 ; nt = size(data,2) ;
x = linspace(min(lon),max(lon),nx) ;
y = linspace(min(lat),max(lat),ny) ;
[X,Y] = meshgrid(x,y) ;
wind = zeros(ny,nx,nt) ;
for i = 1:nt
wind(:,:,i) = griddata(lon,lat,data(:,i),X,Y) ;
end
Aristo Pacino
il 25 Lug 2021
Hi @KSSV, what if I want hourly average of data, what should I change within for loop? Below is my function which I want to add. hour and temp is array nx1 of same dimension
[ah,~,ch] = unique(hour,'rows');
out_hour = [ah,accumarray(ch,temp,[],@nanmean)];
Vedere anche
Categorie
Scopri di più su Geographic Plots in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!