Contour plot of spatial distribution of temperature
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
David Lopez
am 15 Mai 2012
Beantwortet: Chad Greene
am 4 Apr. 2021
i have 5 block data i only need 3
Lat lon month year temp
22.25000 -98.25, 1, 2000, 0.1061891
22.25000, -97.75, 1, 2000, 0.2013340
22.25000, -97.25, 1, 2000, -999.9000
22.25000, -96.75, 1, 2000, -999.9000
22.75000, -100.75, 1, 2000, 0.4650421
22.75000, -100.25, 1, 2000, 0.3308848
22.75000, -99.75, 1, 2000, 0.2076520
22.75000, -99.25, 1, 2000, 0.1700439
22.75000, -98.75, 1, 2000, 0.1031799
22.75000, -98.25, 1, 2000, 0.1318403
22.75000, -97.75, 1, 2000, 0.3397914
22.75000, -97.25, 1, 2000, -999.9000
22.75000, -96.75, 1, 2000, -999.9000
23.25000, -100.75, 1, 2000, 0.4653015
23.25000, -100.25, 1, 2000, 0.3465271
i have develop a contour plot of spatial distribution of temperature
even some values have -999.999 some way to interpolate these values and replace it in the vector of temp.
i already started with this
archivo=load('escenarioA2.txt');
lat=archivo(:,1);
lon=archivo(:,2);
month=archivo(:,3);
year=archivo(:,4);
inc=archivo(:,5);
[m,n]=size(archivo);
nx = length(lon);
ny = length(lat);
[X,Y]=meshgrid(lon,lat);
0 Kommentare
Akzeptierte Antwort
Geoff
am 15 Mai 2012
I would start by removing the invalid readings:
archivo( archivo(:,5) < -999, : ) = [];
You need to have a higher (and uniform) granularity for your grid... How about this:
latmin = min(lat); latmax = max(lat);
lonmin = min(lon); lonmax = max(lon);
glat = linspace( latmin, latmax, ceil((latmax-latmin)/0.01) );
glon = linspace( lonmin, lonmax, ceil((lonmax-lonmin)/0.01) );
[X,Y] = meshgrid(glon, glat);
Now, you want to interpolate your data into that grid. Look at the following function:
doc interp2
Weitere Antworten (1)
Chad Greene
am 4 Apr. 2021
The regular quarter-degree spacing of the data suggests that no interpolation is necessary for this dataset--it just needs to be restructured. An easy way to do that is with a function of mine called xyz2grid.
For your matrix M whose columns correspond to [lat, lon, month, year, temp], use longitude as the "x" data and latitude as the "y" data, then grid it up like this:
[Lon,Lat,Temp] = xyz2grid(M(:,2),M(:,1),M(:,5));
Then NaN-out the no-data values like this:
Temp(Temp==-999.9) = nan;
0 Kommentare
Siehe auch
Kategorien
Mehr zu Contour Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!