ПредишенСледващото

Задача: Open NetCDF файлов формат в MATLAB
Решение. чиста неусложнена MATLAB

Аз ще се опитам да опиша тук е отговорът на този въпрос е изгаряне на къде да изпратите страда от различни форуми. От версия 7.7, Matlab подкрепя NetCDF формат роден, без различни лосиони, които са били длъжни преди. Синтаксисът, който се използва за работа с файлове NetCDF доста странно, да, не ме съди. Тук ще опиша как в Matlab да се направи една проста действие, а именно за четене на данни от файл.

Ако искате да работите с NetCDF. е добра отправна точка, за да се запознае с факта, че тя представлява формат. В този случай, толкова по-далеч ще се появи като безсмислици. Но като цяло можете да направите, без тези уникални знания, ако всичко, което е нужно е да се изкопаят данни от файл и да забравите за NetCDF като кошмар. .? Информация за Matlab функции за работа с NetCDF намира тук.

В резултат на това можете да получите знак с вашите файлове с данни. Като цяло, трябва да се интересуват само това, което е в раздела за променливи. т.е. информация за променливите, които се съдържат във файла. В този пример, променливи лат (ширина), дълж (дължина), време (изминало време от 1-1-1 00: 00: 0.0 час), въздух (температура на въздуха в Келвин).

UPD. Те казват, че не всички версии имат ncdisp функция Matlab. Ако имате най-модерната случая, тогава ще могат да теглят бинарни файлове vindouz ncdump програма тук. за Ubuntu Linux и други като него, за да напишете в терминала:

ап-да инсталирате NetCDF-бин

Освен това, на терминала vindouz въведете команда или Linux

Идеята е, че ако работите в Vindouz тогава ncdump.exe програма трябва да е в папката с файла. Тази команда ще ви отнеме около една и съща информация, тъй като ncdisp.

Първо, нека да се опита да получи най-важното - температурата на въздуха. На първо място, трябва да отворите файла в Matlab може да работи с него:

По някаква причина вътрешните му функции, които изискват данни от променливата NetCDF. Те не работят с имената си и с техните серийни номера, така че ние трябва да знаем какво е серийния номер на променлива въздуха:

>> varid = NetCDF. inqVarID # 40; NCID, "въздух" # 41;

Резултатът е серийния номер 3. Ние сме като цяло самите ще го брои, знаейки, че по сметката на променливи в този случай идва от земята, а не един.
Сега, знаейки, серийния номер на NetCDF променлива, можем да копирате стойностите от него в Matlab променлива:

данни = NetCDF. getVar # 40; NCID, 3 # 41; ;

В резултат на това, можете да получите на триизмерен матрица [географска дължина и ширина, време]. Тя ще изглежда, че проблемът е решен, но не бързайте. Ако се вгледате в стойностите на променливи данни. те ще бъдат много наподобява това, което ще очакваме да видим такива температури, дори ако те са изразени в градуси по Келвин, светът не се случва. Фактът, че файловете на повторен анализ на данните се съхраняват като цели числа, които заемат много малко място от число с плаваща точка. Това се прави, за да се гарантира, че досиетата са били по-малко. За да получите най температурата който искате да конвертирате тези данни прост начин.

Ако се вгледате в атрибутите на една променлива въздух. получава при използване на ncdisp. там ще видите:

add_offset = 513
scale_factor = 0.01

За да получите данните в келвини, умножете всичко на scale_factor и добавете add_offset.

Можете просто да вземе номерата от описанието на файла, или да ги изтеглят с помощта на следните команди:

add_off = NetCDF. getAtt # 40; NCID, 3. "add_offset" # 41;
scale_factor = NetCDF. getAtt # 40; NCID, 3. "scale_factor" # 41;

За съжаление, само да умножите и добавете не работи. Сега, ако се опитате да направите тази операция, вие ще получите следната грешка:

Целите числа могат да се комбинират само с цели числа от същия клас. или скаларна удвоява.

Фактът, че типа на променливата данни сега int16 и с плаваща запетая, те не искат да се размножават. Необходимо е да се преведат на данните в даден тип единичен

data_single = единична # 40; данни # 41; ;

Всъщност, можете да го направите, дори когато копирате данни от променлива в променливата NetCDF Matlab. След това, ние се трансформира в Келвин:

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

.. ако е необходимо, в Целзий

data_cel = 273.15 data_scaled-

Но не за това. Тя изглежда доста стандартни, така че всичко трябва да е една и съща. Само разбира се, не е необходимо да се добави нещо към ценностите и да се размножават, има стойност в келвини веднага дал.
И защо решихте да го отворите Matlab? Може език, който се използва е с интерфейс NetCDF?

Добър ден. Бих искал да ви попитам - и как можете да намерите на температурата и може да бъде на вятъра в района на Азовско море?
NetCDF тестов файл, който изтеглих, но това би било много интересно да се получат данни за областта е Азовско море!

Как да получите информация за температурните пластове - всичко е едно и също интерполация се изчислява на данни. .? Да те обичам температурата се измерва точно на слоеве?

.? още един въпрос - да преминете към Python в Matlab поради каква причина?
Благодарение на Python за свободен?
Просто мисля, че Matlab е много мощен инструмент, който е трудно да отида някъде другаде ...

глобалния файл, така, разбира се, и Азовско море там. Въпреки това, резолюцията на данните е много груб. Сайтът има НОПХ вятър и други haraktersitiki атмосфера, но ако имате нужда от повече резолюция, най-добре е да се търси това, което или регионални продукти.

Тези данни са получени чрез усвояване на полеви данни в циркулацията на модела атмосфера. Всъщност може да се каже, че тя е динамична inetrpolyatsiya.

С една дума, инструментът Matlab е мощен, но гъвкав, с променящия се свят, той не върви в крак.

Размер Bytes клас атрибути

данни 1 × 1 int32 април

т.е. netcdf.getVar дава броя - int32. като неговият номер 32767 не се пълни ...

Беше любопитно - защо в файла 75 KB само един номер?

32767 - е липсата на стойност от тези файлове трябва да бъде dofiga. Вие трябва да ги промените за NaN.

Да не забравяме и офсетов и мащаб (доколкото мога да видя, за да получите точните стойности, просто трябва да се умножи по 100)

Благодаря ви много! Всичко се оказа. Просто си мислех, че е било грешка от някакъв вид, твърде много липсващите стойности.

Zdrabstbyite!
Pomogite MNE pojaluista, KAK poluchiti Дани tsentrob deistbii atmosperii ИЗ НОПХ reanaliza в Того bremeni направя nastoyashego bremeni,

Публикуване вашия коментар.

Подкрепете проекта - споделете линка, благодаря!