Глава 2. Графика в Matlab
Рис. 2.56. Считанное из файла изображение
Рис. 2.57. Изображение масштабировано под размер графического окна
101
Самоучитель Matlab
Рис. 2.58. Изображение отображено в правильном масштабе
В соответствии с командой axis image масштабирование для рисунка устанавливается в соответствии с его размерами (в пикселях).
Со считанным изображением можно работать так же, как и с созданным в рабочем документе. Далее приведен пример кода, которым в считанном из файла изображении устанавливается "красный фильтр" - оставляется только составляющая красного цвета (жирным шрифтом выделен ввод пользователя).
>>[M N k]=size(B)
M =
1140
N =
2964
k =
3
>>for i=1:M
for j=1:N B(i,j,2)=0; B(i,j,3)=0; end
end
>>image(B)
>>axis image
102
Глава 2. Графика в Matlab
После выполнения этих команд в графическом окне отображается картинка, как на рис. 2.59.
Рис. 2.59. Для изображения установлен "красный фильтр"
С помощью функции size() определяются размеры массива, указанного аргументом функции. Результат функции – вектор из трех элементов. Первый элемент определяет количество пикселей в столбце, второй – в строке рисунка. Третий всегда равен трем (три составляющие цвета в формате RGB). Поэтому после выполнения команды [M N k]=size(B) в переменную M записывается значение размера (в пикселях) по вертикали, а в переменную N записывается размер (в пикселях) по горизонтали. Затем в двойном вложенном операторе цикла элементы массива B, отвечающие содержанию зеленого и синего цвета, обнуляются.
103
Глава 3 Элементы программирования
Мы здесь по такому делу, в котором ошибиться нельзя.
К/ф "Клуб самоубийц, или Приключения титулованной особы"
В режиме командного окна (то есть путем ввода и выполнения отдельных команд в командном окне) можно решать многие задачи. Но на практике такой подход не очень эффективный, особенно если необходимо выполнять существенные объемы вычислений. Другими словами, важно иметь возможность выполнять быстро и просто определенные фрагменты кода, причем весьма желательно вводить этот код один раз, а выполнять столько, сколько нужно. Разумеется, такая возможность в Matlab есть. Базируется она на использовании так называемых m-файлов. Это файлы с программным кодом, или командами для выполнения, если хотите. В нужном месте и в нужное время на соответствующий файл в командном окне выполняется ссылка, и в результате весь код (то есть команды), записанный в соответствующий файл, будет выполнен так, как если бы он вводился в командную строку при пошаговых вычислениях. В подобных случаях говорят об использовании сценариев. О них дальше и будет идти речь.
На заметку
Еще одна важная ветвь или направление в использовании m-файлов связана с созданием функций пользователя. Хотя обе темы близки, при их практическом применении имеются некоторые особенности. Вопросу создания функций пользователя посвящен второй раздел этой главы.
Создание сценариев
Пусть это будет естественный отбор, но ускоренно и заботливо направляемый.
В. Черномырдин
В самом простом варианте сценарий в Matlab – это набор команд, занесенных в файл с расширением .m. В принципе, для создания сценария можно воспользоваться обычным текстовым редактором, набрать в нем код команд по правилам синтаксиса Matlab и сохранить файл с расширением .m (только нужно правильно выбрать каталог или прописать к нему путь, чтобы при вызове сценария приложение могло найти соответствующий m-файл). Однако удобнее воспользоваться встроенным редактором m-файлов, который есть в Matlab.
104
Глава 3. Элементы программирования
В известном смысле сценарий – этот обычный набор команд, которые выполняются одна за другой последовательно, как они указаны в файле. При вызове сценария его имя (точнее, имя соответствующего файла без расширения) указывается в командной строке рабочей области. Эта аналогия становится особенно уместной, если учесть, что в Matlab в сценариях не используются локальные переменные. Другими словами, все переменные в сценариях глобальные, поэтому доступны в пределах всего рабочего пространства: от непосредственно командной строки до любых других сценариев и функций.
На заметку
К последним, кстати, правило использования исключительно глобальных переменных не относится – в функциях могут быть как глобальные, так и локальные переменные.
Для создания m-файла достаточно выбрать команду File ► New ► M-File в главном меню окна приложения Matlab. В результате открывается редактор m-файлов, в рабочей области которого вводятся команды. На рис. 3.1 представлено окно редактора m-файлов с набором введенных туда команд.
Рис. 3.1. Окно редактора m-файлов с командами
Файл сохранен с названием SinX.m. Непосредственно в файле записаны следующие команды:
x=-4*pi:0.01:4*pi; y=sin(x)./x; plot(x,y,'b-','LineWidth',2)
title('Plot for function y(x)=sin(x)/x') xlabel('x')
ylabel('sin(x)/x') grid on
Их последовательное выполнение в командном окне привело бы к созданию графика функции y(x) = sin(x x) на интервале значений аргумента
105