Рубрика: Matlab запись в txt файл

Matlab запись в txt файл

С версии 7. Синтаксис, который используется для работы с файлами netCDF, довольно странный, ну, да, не мне судить. Здесь я опишу, как сделать одно простое действие в Matlab - прочитать данные из файла. Если вы собираетесь работать с netCDF, то неплохо было бы знать, что это за формат. Так вы не услышите лишней тарабарщины. Но в целом можно обойтись и без этих уникальных знаний, если все, что вы хотите, - это извлечь данные из файла и забыть о netCDF как о страшном сне.

Для начала давайте загрузим тестовый файл. Это будет любимый всеми гидрометеорологами файл с шестичасовой температурой поверхности из реанализа NCEP.

Я буду использовать этот файл размером 20 мегабайт. Чтобы открыть файл netCDF, необходимо знать его структуру, переменные, которые он содержит, и их атрибуты. Функция ncdisp сделает это за вас. Вас должна интересовать только секция Variables, в которой содержится информация о переменных в вашем файле. В этом примере переменными являются широта lat , долгота long , время, прошедшее с UPD: Не во всех выпусках Matlab есть функция ncdisp.

Если у вас такой случай, то для Windows вы скачиваете двоичные файлы программы ncdump отсюда, для Ubuntu Linux и подобных пишете в терминале: sudo apt-get install netcdf-bin Затем в терминале windows или linux набираете команду ncdump -h air. Эта команда даст вам более или менее ту же информацию, что и ncdisp. Сначала попробуем получить главное: температуру воздуха. Мы вполне могли вычислить ее сами, зная, что переменные в данном случае начинаются с нуля, а не с 1.

Кажется, что мы решили задачу, но не стоит так торопиться. Если вы посмотрите на значения в переменной данных, они очень близки к тому, что вы ожидаете увидеть, потому что даже если они выражены в Кельвинах, такие температуры не встречаются на Земле. Причина в том, что данные в файлах реанализа хранятся в целых числах, которые занимают гораздо меньше места, чем числа с плавающей точкой.

Это сделано для того, чтобы уменьшить размер файлов. Чтобы получить температуру, необходимо аккуратно преобразовать эти данные. Если вы попытаетесь сделать это сейчас, то получите следующую ошибку: Целые числа могут быть объединены только с целыми числами того же класса или скалярными двойками. Дело в том, что тип переменных данных теперь int16, и они не хотят умножаться на числа с плавающей точкой.

Навигация

About Author


Brarisar

Comments

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *