пятница, 11 апреля 2014 г.

Freemat. Работа с данными

Freemat умеет загружать данные из файлов, создавать из них матрицы, обрабатывать и затем снова записывать в виде файлов. В текстовом режиме поддерживаются файлы xml, html, но мы рассмотрим формат csv, т.к. многие измерительные приборы сохраняют результаты именно в нём. К тому же, это обычный текстовый формат, просто обязательным разделителем в нём является запятая.



Допустим, у вас есть результат каких-либо измерений.
Считать данные можно функцией csvread('f_name'), где f_name - имя файла. Попробуем применить к ним те две функци "статистической" обработки, которые есть в программе.
Функция mean(A, dir) вычисляет среднее значение элементов матрицы A в направлении dir (dir = 1 - по столбцам, dir = 2 - по строкам и т.д.). std(A, dir) рассчитывает среднеквадратичные отклонения, параметр dir имеет то же назначение, что для mean(). В приведённом примере среднее значение экспериментальных данных (второй столбец) составило 4,1, среднеквадратичное отклонение 0,6 (округляем до десятых, т.к. исходные данные содержат один знак после запятой). 
Если же необходимо сохранить какую-либо матрицу M в виде файла csv, используется функция csvwrite('f_name', M).

Для загрузки изображения используется функция [A, map, alpha] = imread('f_name'). При этом в матрице A сохраняются яркости пикселей, map - информация о цветах, alpha - данные альфа-канала. 
Попробуем загрузить и преобразовать данное изображение.
Функция size(A) показывает, что картинка имеет разрешение 273x409 и каждый пиксель кодируется 3-мя цветами. В данном примере яркости цветов просто инвертируются. Для этого создаётся матрица B с той же размерностью, что A, но значением каждого элемента 255 (для используемого формата яркость описывается числом 0-255), и разность B-A записывается в файл. Вот что должно получиться.
Если под рукой нет ни Photoshop-а, ни GIMP-а, только Freemat, вы уже способны на многое! Только нужно учесть, что программа поддерживает ограниченное число графических форматов: bmp, jpeg, png, xpm, ppm.





Комментариев нет:

Отправить комментарий