Поскольку в языке Matlab элементы массива упорядочены по столбцам, то допустимы операторы вида A(n1:n2), которые выделяют пронумерованные элементы с номера n1 до номера n2. Оператор A(:) записывает все элементы массива A в виде столбца.
Для определения размера массива может использоваться оператор size, который возвращает вектор, элементы которого содержат число строк, столбцов и т.д. анализируемого массива. Например:
%формируем массив размером 1x2
mas = [1 2; 3 4]
%определяем размерность массива
razmer = size(mas)
При работе с матрицами в системе Matlab, используются стандартные арифметические операторы: +, -, *, / (- левое деление), \ (- правое деление), ^(- возведение матрицы в степень).
Для обозначения поэлементных операций с векторами и матрицами используется оператор .(- точка), который добавляется перед стандартным обозначением арифметической операции:
¨ .*– поэлементное умножение для массивов;
¨ .^ – возведение в степень для массивов;
¨ .\– левое деление для массивов;
¨ ./– правое деление для массивов.
Пример
%формируем две матрицы 3x3
A = [1 2 3; 4 5 6; 7 8 9]
B = [1 1 1; 2 2 2; 3 3 3]
%перемножаем матрицы
C = A*B
%выполняем поэлементное умножение массивов
D = A.*B
Циклы
Для организации циклических вычислений в Matlab используются два оператора: for и while.
Синтаксис оператораfor:
for <variable> = <expression>
<statements>
end
В качестве выражения <expression> обычно используется выражение вида:
i_start:i_step:i_end,
где i_start - стартовое значение счетчика цикла <variable>, i_step – шаг, с которым изменяется значение счетчика цикла, i_end - конечное значение счетчика цикла. Если шаг не задан, то по умолчанию он принимается равным 1.
Пример
for m = 1:k
for n = 1:k
a(m,n) = 1/(m+n -1);
end
end
Синтаксис оператораwhile:
while <expression>
<statements>
end
Операторы <statements> выполняются до тех пор, пока действительная часть выражения <expression> имеет все ненулевые элементы.
Пример
K = 1;
eps = 0;
n = 10;
while eps < n
eps = eps+k;
k = k + 1;
end
Для преждевременного выхода из циклов используется оператор break. Оператор break определен только внутри операторовfor и while. Для выхода из функций необходимо использовать оператор return.
Для досрочной передачи управления на следующую итерацию цикла используется оператор continue.
Условные операторы
Для реализации ветвления реализованы следующие операторы: if и switch.
Операторif может иметь следующий синтаксис:
if <expression>
<statements>
end
Операторы <statements> выполняются, если выражение <expression> справедливо.
Расширенная форма оператора if имеет следующий вид:
if <expression>
<statements1>
else
<statements2>
end
Если выражение <expression> истинно, то выполнятся операторы <statements2>, иначе – операторы <statements1>.
Пример
if A > B
'greater'
else if A < B
'less'
else if A == B
'equal'
else
error('Unexpected situation')
end
Оператор switch имеет следующий вид:
switch <switch_expr>
case <case_expr>
<statement>,...,<statement>
case {<case_expr1>,<case_expr2>,<case_expr3>,...}
<statement>,...,<statement>
...
otherwise
<statement>,...,<statement>
end
В отличие от C++, в Matlab в операторе switch выполняется только первая case-ветка, значение case_expr которой совпало с результатом вычисления выражения switch_expr. Поэтому нет необходимости в использовании оператора break для выхода.
Пример
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end
Краткий перечень основных функций пакета Image Processing Toolbox и операторов, наиболее часто используемых при обработке матриц, приведен в приложении. Для того чтобы в среде Matlab посмотреть справочную информацию по какой-либо функции, необходимо в командном окне набрать команду вида
helpcommand,
где command – имя интересующего нас оператора.
Пример
helpimhist
t = strcat(t1,t2,…)- объединение нескольких строк t1,t2,…
в новую строку t.
t=int2str(k)-преобразование целого числа kв строку t.
5. Порядок выполнения работы
С помощью пункта меню FILE®NEW®M-FILE или соответствующей кнопки панели инструментов открыть окно редактора. В нем составить программу на языке Matlab с использованием команд из пакета Image Processing Toolbox, которая выполняла бы следующую последовательность действий.
1. Считать изображение из файла, указанного преподавателем.
2. Определить параметры изображения и его размер. При этом для непосредственного вывода этих характеристик в командное окно не следует ставить в конце команды imfinfo символ ; .
3. Отобразить считанное изображение на экране.
4. Вырезать из исходного изображения небольшой участок, выделив его с помощью мыши. Вывести его в новое окно и сохранить в новом файле в своем рабочем каталоге.
5. Изменить режим вывода изображений, добавив оси координат.
6. Вырезать из исходного изображения участок 100х100 точек с заданным местоположением, определяя его по координатным осям. Вывести его в текущее окно с запретом масштабирования.
7. Создать новое изображение из последнего, увеличив его размеры в два раза. Вывести его в новое окно, запретив масштабирование.
8. Повернуть последнее изображение влево на 45 градусов с сохранением размеров. Отобразить его в отдельном окне.
9. Отобразить на экране двумерную функцию яркости в виде поверхности.
10. Вывести в одно окно последовательность заданного числа кадров. Использовать режим вывода, в котором отсутствуют мелькания при смене кадров.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.