Nyílt NetCDF Matlab (például NCEP reanalízis) megállapítja, oceanográfus - Kezelés és

Feladat: Open NetCDF fájlformátum MATLAB
Határozat. tiszta egyszerű MATLAB

Megpróbálom leírni itt a válasz erre égető kérdés volt küldjük szenvednek különböző fórumokon. Verziótól kezdődően 7,7, Matlab támogatja NetCDF méret natívan nélkül a különböző krémek, amelyek előtt szükséges. A szintaxis hogy használják, hogy dolgoznak NetCDF fájlokat nem furcsa, igen, ne ítélj meg. Itt fogom leírni, hogyan Matlab, hogy egy egyszerű intézkedés, vagyis az adatok olvasását egy fájlból.

Ha azt szeretnénk, hogy működjön együtt NetCDF. egy jó kiindulási pont, hogy megismerjék azt a tényt, hogy ez jelenti a formátumot. Ebben az esetben a további fog megjelenni, mint halandzsa. De általában megteheti anélkül, hogy ezek egyedi tudás, ha minden amire szüksége van, hogy kiásni fájlból adatokat és felejtse el a NetCDF mint egy rémálom. .? Info Matlab funkcióval rendelkezik NetCDF itt található.

Ennek eredményeként, akkor kap egy jel a fájl adatait. Nagyjából, ha kell csak az érdekel, hogy mi van a változók listájában. azaz információt változók tartalmazott a fájlban. Ebben a példában, változók lat (szélesség), hosszúság (hosszúság), idő (eltelt idő a 1-1-1 00: 00: 0,0 óra), a levegő (a levegő hőmérséklete Kelvin).

UPD. Azt mondják, hogy nem minden kibocsátásokra ncdisp Matlab függvény. Ha a legfejlettebb helyzet, akkor letölti bináris vindouz ncdump program itt. Ubuntu Linux és a hozzá hasonlók, hogy írjon egy terminálba:

sudo apt-get install NetCDF-bin

Továbbá, a terminál vindouz meg a parancsot, vagy Linux

Az elképzelés az, hogy ha a munka Vindouz majd ncdump.exe programot kell a mappában a fájlt. Ez a parancs elviszi körül ugyanazt az információt, mint a ncdisp.

Először is nézzük meg kell kérni a legfontosabb dolog - a levegő hőmérséklete. Az első és legfontosabb, meg kell nyitni a fájlt Matlab lehetett vele dolgozni:

Valamilyen oknál fogva a belső funkciókat kérhet adatokat az NetCDF változó. Nem működnek azok nevét és azok sorszámát, így tudnunk kell, hogy mi az a sorozatszám a változó levegő:

>> varid = NetCDF. inqVarID # 40; ncid, 'levegő' # 41;

Az eredmény a sorszám 3. Mi általában maguk is számít, tudva, hogy a számla változók ebben az esetben jön az alapoktól kezdve, nem pedig egy.
Most, hogy tudja a sorszámát NetCDF változó, akkor másoljuk át az értékeket úgy Matlabban változó:

adatok = NetCDF. getVar # 40; ncid, 3 # 41; ;

Ennek eredményeként, akkor kap egy háromdimenziós mátrix [hosszúság, szélesség, time]. Úgy tűnik, hogy a probléma megoldódott, de nem siet. Ha megnézzük az értékeket változó adatok. akkor nagyon távolról hasonlít, amit várnánk, hogy ilyen hőmérsékleten, még ha azok Kelvin-fokban kifejezett, a világ nem fog megtörténni. Az a tény, hogy a reanalízis adatfájljai egészek, amelyek felveszik sokkal kevesebb helyet foglal, mint egy lebegőpontos szám. Ez úgy történik, hogy a fájlok már kevésbé. Ahhoz, hogy a hőmérséklet a konvertálni kívánt az adatok egyszerű módon.

Ha megnézzük az attribútumok egy változó levegő. alkalmazásával kapott ncdisp. látni fogja:

add_offset = 513
scale_factor = 0,01

Annak érdekében, hogy az adatok kelvin, szorozza mindent scale_factor és add add_offset.

Akkor csak hogy a számokat a leírás a fájl, vagy húzza őket a következő parancsokkal:

add_off = NetCDF. getAtt # 40; ncid, 3. 'add_offset' # 41;
scale_factor = NetCDF. getAtt # 40; ncid, 3. 'scale_factor' # 41;

Sajnos, csak szaporodnak, és add nem működik. Most, ha megpróbáljuk ezt a műveletet, akkor az alábbi hibaüzenetet kaphatja:

Egész számok csak kombinálható egészek az azonos osztályba. vagy skalár megduplázódik.

Az a tény, hogy a típus a változó adatok most int16 és lebegőpontos számok, nem akarnak szaporodni. Meg kell fordítani az adatokat egy típusú egyszeri

data_single = egyszeres # 40; adat # 41; ;

Sőt, akkor is megteheti, ha másolja az adatokat egy változót a NetCDF változó Matlab. Ezután azt lefordítani Kelvin:

data_scaled = # 40; data_single * scale_factor # 41; + Add_off;

.. ha szükséges, a Celsius

data_cel = data_scaled- 273,15

De nem ezért. Úgy néz ki, elég általános, ezért kell minden ugyanaz. Csak persze ez nem szükséges hozzá semmit az értékek és szaporodnak, van érték kelvin azonnal adni.
És miért döntöttél úgy, hogy nyissa meg a Matlab? Lehet egy nyelvet, hogy használjon egy NetCDF felület?

Jó napot kívánok. Szeretném kérdezni - és hogyan lehet megtalálni a hőmérséklet és a szél meg a terület a Azovi-tenger?
NetCDF teszt fájl letöltött, de nagyon érdekes lenne, hogy adatokat szerezzen a terület a Azovi-tenger!

Hogyan juthat az információt a hőmérséklet rétegek - ez mind ugyanaz interpoláció számított adatok. .? Vajon szeretik a hőmérsékletét pontosan rétegek?

.? Egy másik kérdés - váltott Python c Matlab milyen okból?
Mivel a Python ingyen?
Csak azt gondolom, hogy a Matlab egy nagyon hatékony eszköz, hogy nehéz, hogy valahol máshol ...

globális fájlt, így, természetesen, és a Azovi-tenger ott is. Azonban a felbontás az adatok nagyon durva. Az oldalon van NCEP a szél és egyéb haraktersitiki hangulat, de ha kell több, felbontást, akkor a legjobb, hogy vizsgálja meg, amit vagy regionális termékeket.

Ezeket az adatokat kapott asszimilációja mező adatok légkörzésre modell szerint. Valójában azt mondhatjuk, hogy ez egy dinamikus inetrpolyatsiya.

Röviden, a Matlab eszköz egy erős, de rugalmas, a változó világban, ő nem tartott lépést.

Név Méret Bytes osztály attribútumai

adatok 1 × 1 április int32

azaz netcdf.getVar számát adja meg - int32. mint a szám 32767 nem zsúfolt ...

Ez volt kíváncsi - miért a fájlban 75 KB csak egy szám?

32.767 - a hiánya érték ezeket a fájlokat kell dofiga. Meg kell változtatni őket NaN.

Ne felejtsük el, az eltolás és a skála (amennyire én látom, hogy a helyes értékeket, akkor csak meg kell szorozni 100)

Köszönöm szépen! Minden kiderült. Azt gondoltam, hogy hiba volt valamiféle, túl sok a hiányzó értékeket.

Zdrabstbyite!
Pomogite NGM pojaluista, kak poluchiti Dannie tsentrob deistbii atmosperii iz NCEP reanaliza c Togo bremeni csinálni nastoyashego bremeni,

Kiküldetés meg véleményét.