- •Лабораторная работа 1. Кластерный анализ объектов, заданных набором признаков
- •Текущий каталог
- •Средства языка программирования matlab
- •Создание массивов ячеек
- •Визуализация массивов ячеек
- •Управляющие структуры Условный оператор
- •Структура переключателя
- •Циклы типа for...End
- •Диалоговый ввод
- •Функции в matlab(м-функции)
- •Циклы типа while...End
- •Некоторые функции и средства визуализации
- •Иерархические методы кластерного анализа
- •Методы объединения или связи
- •Алгоритм k-средних (k-means)
- •Описание алгоритма
- •С помощью функции fcm
Циклы типа while...End
Цикл типа while выполняется до тех пор, пока выполняется Условие:
while Условие
Инструкции
end
Досрочное завершение циклов реализуется с помощью операторов break или continue.
Диалоговый ввод
Приведем простой пример диалоговой программы:
% Вычисление длины окружности с диалоговым вводом радиуса
r=0;
while r>=0,
r=input('Введите радиус окружности r=');
if r>=0
disp(' Длина окружности l=');
disp(2*pi*r),
end
end
Эта программа служит для многократного вычисления длины окружности по вводимому пользователем значению радиуса г. Простейший диалог реализован с помощью команды input:
input(‘Введите радиус окружности r='):
При выполнении этой команды вначале выводится запрос в виде строки, затем происходит остановка работы программы и ожидается ввод значения радиуса г (в общем случае числа). Ввод, как обычно, подтверждается нажатием клавиши Enter, после чего введенное число присваивается переменной г. Следующие строки
if r>=0
disp(' Длина окружности l = ');
disp(2*pi*r);
end
с помощью команды disp при r>=0 выводят надпись «Длина окружности 1=» и вычисленное значение длины окружности.
Пока r>=0. цикл повторяется. Но стоит задать r<0, вычисление длины окружности перестает выполняться, а цикл завершается.
Функция input может использоваться и для ввода произвольных строковых выражений. При этом она задается в следующем виде:
input('Комментарий'. ‘s’)
При выполнении этой функции она останавливает вычисления и ожидает ввода строкового комментария. После ввода возвращается набранная строка. Это иллюстрирует следующий пример:
» S=input('Введите выражение ','s') % (Вводим) 2*sin(l)
S =
2*sin(l)
» eval(S)
ans =
1.6829
Функция eval позволяет вычислить выражение, заданное (полученное от функции input) в символьном виде. Вообще говоря, возможность ввода любого символьного выражения в сочетании с присущими языку программирования MATLAB управляющими структурами открывает путь к созданию диалоговых программ любой сложности
Функции в matlab(м-функции)
М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.
Пример
Функция average - это достаточно простой M-файл, который вычисляет среднее значение элементов вектора: function y = average (x) % AVERAGE Среднее знач0ение элементов вектора. [m,n] = size(x); if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) error('Входной массив должен быть вектором’) end y =sum(x)/length(x); % Собственно вычисление
Эти команды нужно записать в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:
z=1:99; average(z) ans = 50
Структура М-функции.
M-функция состоит из:
строки определения функции;
первой строки комментария;
тела функции;
строчных комментариев;
Строка определения функции. Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов.
Строка определения функции average имеет вид:
function y = average(x)
Здесь:
function - ключевое слово, определяющее М-функцию;
y - выходной аргумент;
average - имя функции;
x - входной аргумент.
Каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.
Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для отделения аргументов во входном и выходном списках применяются запятые.
Пример
function [x, y, z] = sphere(theta, phi, rho)
Первая строка комментария. Для функции average первая строка комментария выглядит так:
% AVERAGE Среднее значение элементов вектора
Это - первая строка текста, которая появляется, когда пользователь набирает команду help <имя_функции>. Поскольку эта строка содержит важную информацию об M-файле, она должна быть тщательно составлена.
Тело функции. Тело функции содержит код языка MATLAB, который выполняет вычисления и присваивает значения выходным аргументам. Операторы в теле функции могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк.
Пример
Тело функции average включает ряд простейших операторов программирования:
Оператор вызова функции size Начало оператора if |
|
|
Сообщение об ошибке Конец оператора if Вычисление и присваивание |
Как уже говорилось ранее, комментарии отмечаются знаком (%). Строка комментария может быть размещена в любом месте M-файла, в том числе и в конце строки.
Имена М-функций. В системе MATLAB на имена М-функций налагаются те же ограничения, что и на имена переменных - их длина не должна превышать 31 символа. Имена М-функций должны начинаться с буквы; остальные символы могут быть любой комбинацией букв, цифр и подчеркиваний.
Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.
