Archive for the 'MATLAB' Category

Открываем netCDF в MATLAB (на примере NCEP реанализа)

Задача: Открыть файл формата netCDF в MATLAB
Решение: чистый незамутненный MATLAB

Постараюсь описать здесь ответ на этот животрепещущий вопрос, чтобы было куда отправлять страждущих с различных форумов. Начиная с версии 7.7, Matlab поддерживает работу с форматом netCDF нативно, без различных примочек, которые требовались раньше. Синтаксис, который используется для работы с netCDF файлами довольно странный, ну да, не мне судить. Здесь я опишу, как в Matlab совершить одно простое действие, а именно прочитать данные из файла.
Read more »

Открыть .mat файл в Python

Задача: открыть файл сохранённый в формате .mat и содержащий несколько переменных в Питоне
?нструменты: Matlab, scipy.io, numpy

Если матлабовский код уже написан, то смысла особого переделывать его на python нет (если, конечно вы не ярый фанат Столлмана, или у вас просто нет матлаба). Но бывают случаи когда результаты работы матлабовских скриптов (в том числе и промежуточные) хочется использовать в питоновских сценариях. Сохраняя результаты в .mat файлах вы без проблем (ну почти) сможете открыть их питоном.

Под катом необходимые телодвижения.
Read more »

Вставляем нули перед цифрами, Python

Задача: написать функцию которая переводит целое число в строку определённого размера, содержащую это целое число и нули.

То есть:
5 >> 00005
123 >> 00123

?нструменты: Python, модули os, sys

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

Сразу скажу что я абсолютно уверен что эта задача решается в питоне какой ни будь встроенной функцией, и буду благодарен, если кто ни будь мне на неё укажет. Мне же, к сожалению, ничего раскопать не удалось. Ещё больше я уверен в том что это делает и какой-нибудь awk в одну строчку, но мне нужна была питоновская функция.

Для чего это нужно? Сделано это было для чтения модельных файлов, у которых имена определяются именно таким образом, но потом оказалось полезным и для создания gif файлов из ps при помощи convert (чтоб сортировало по порядку). Хотя ещё позже обнаружилось что gif файлы прекрасно создаются и без этого :))). Оба примера я приведу. Также приведу оригинальную функцию для MATLAB, которая делает то же самое.

Объяснений много не будет, потому что объяснять там особо нечего )

Сам скрипт:
Read more »

Вырезание полигона из данных

Задача — вырезать район из матрицы данных.

В наличии — матрица с данными и две матрицы такого же размера что и матрица с данными, в одной находятся широты в другой долготы.

?нструменты — Matlab и GoogleEarth

Чтобы не отрываться от реальности, скажу что данные — это концентрация льда по SSM/I , NASA Team алгоритм. Решение грязное, медленное и нудное, правильного и красивого мне найти пока не удалось )
Read more »

Скопировать колонку несколько раз в Matlab

Если у вас есть колонка с данными и вам нужно сделать матрицу в которой была бы куча таких колонок, то есть клонировать их, то есть размножить, ну или как там ещё назвать… можно сделать следующее

dd = a(:,ones(1,n))

Где

a — изначальная одинокая колонка

n — количество колонок которое вам надо получить в итоге.

Есть ещё функция repmat но она медленней )

Открываем .hdf в Matlab

Мне попались файлы продвинутого формата hdf и нужно было как то открыть имеющиеся в них данные. С самим форматом мы разберёмся как нить в другой раз, наша задача добыть матрицу n*m.

В отличии от netCDF, поддержка HDF в матлабе присутствует родная и никаких телодвижений чтобы заставить его с форматом работать не требуется. А требуется только знать две команды.

Read more »