- •Лабораторная работа 1. Кластерный анализ объектов, заданных набором признаков
- •Текущий каталог
- •Средства языка программирования matlab
- •Создание массивов ячеек
- •Визуализация массивов ячеек
- •Управляющие структуры Условный оператор
- •Структура переключателя
- •Циклы типа for...End
- •Циклы типа while...End
- •Диалоговый ввод
- •Функции в matlab(м-функции)
- •Некоторые функции и средства визуализации
- •Иерархические методы кластерного анализа
- •Методы объединения или связи
- •Алгоритм k-средних (k-means)
- •Описание алгоритма
- •С помощью функции fcm
Управляющие структуры Условный оператор
Условный оператор if в общем виде записывается следующим образом:
if Условие
Инструкции_1
elself Условие
Инструкции_2
else
Инструкции_3
end
Эта конструкция допускает несколько частных вариантов. В простейшем случае:
if Условие
Инструкции
end
Пока Условие возвращает логическое значение 1 (то есть «истина»), выполняются Инструкции, составляющие тело структуры if...end. При этом оператор end указывает на конец перечня инструкций. Инструкции в списке разделяются оператором , (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, «ложь»), то Инструкции также не выполняются.
Еще одна конструкция
if Условие
Инструкции_1
else
Инструкции_2
end
выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.
Условия записываются в виде:
Выражение_1 Оператор_отношения Выражение_2,
причем в качестве Операторов_отношения используются следующие операторы: ==, <, >, <=, >= или ~=. Все эти операторы представляют собой пары символов без пробелов между ними.
Структура переключателя
Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:
switch switch_Bыражение
case саsе_Выражение
Список_операторов
case {саsе_Выражение1, Саsе_выражение2, саsе_ВыражениеЗ....}
Список_операторов
Otherwise
Список_операторов
end
Если выражение после заголовка switch имеет значение одного из выражений саsе_Выражение..., то выполняется блок операторов case, в противном случае — список команд после оператора otherwise. При выполнении блока case исполняются те списки инструкций, для которых сазе_Выражение совпадает со switch_выpaжением. сазе_Выражение может быть числом, константой, переменной, вектором ячеек или даже строчной переменной. В последнем случае оператор case истинен, если функция strcmp (значение, выражение) возвращает логическое значение «истина».
Поясним применение оператора switch на примере m-файла swl.m:
switch var
case {1,2,3}
disp(‘Первый квартал')
case {4,5,6}
disp('Второй квартал')
case {7,8,9}
d.isp( 'Третий квартал')
case {10.11,12}
disp(‘Четвертый квартал')
otherwise
disp('Ошибка в задании')
end
Эта программа в ответ на значения переменной van — номера месяца — вычисляет, к какому кварталу относится заданный месяц, и выводит соответствующее сообщение:
» var=2;
» swl
Первый квартал
» var=4;swl
Второй квартал
» var=7:swl
Третий квартал
» var=12;swl
Четвертый квартал
» var=-l;swl
Ошибка в задании
Циклы типа for...End
Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид:
for vаг=Выражение. Инструкция. .... Инструкция end
Выражение чаще всего записывается в виде s:d:e, где s — начальное значение переменной цикла var, d — приращение этой переменной и е — конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s :е (в этом случае d=l). Список выполняемых в цикле инструкций завершается оператором end.
Следующие примеры поясняют применение цикла для получения квадратов значений переменной цикла:
» for 1=1:5 i^2. end;
ans =
1
ans =
4
ans =
9
ans =
16
ans =
25
» for x=0:.25:1 Х ^ 2, end:
ans =
0
ans =
0.0625
ans =
0.2500
ans =
0.5625
ans =
1
Оператор continue передает управление в следующую итерацию цикла, пропуская операторы, которые записаны за ним, причем во вложенном цикле он передает управление на следующую итерацию основного цикла. Оператор break может использоваться для досрочного прерывания выполнения цикла. Как только он встречается в программе, цикл прерывается. Возможны вложенные циклы, например:
for i=1:3
for j=l:3
A(i,j)=i+j;
end
end
В результате выполнения этого цикла (файл for2.m) формируется матрица А:
» for2
» А
А =
2 3 4
3 4 5
4 5 6
»
Следует отметить, что формирование матриц с помощью оператора : (двоеточие) обычно занимает намного меньше времени, чем с помощью цикла. Однако применение цикла нередко оказывается более наглядным и понятным. MATLAB допускает использование в качестве переменной цикла массива А размера тхп.
» А=[1 2 3;4 5 6]
А =
1 2 3
4 5 6
» for var=A
Var;
end
