8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 147 148 149 150 151 152 153 ... 365

case 2

strplot - strcat(strplot, :); case 3

strplot = streat(strplot, —); otherwise

error(неизвестный тип линии")

end

% Добавление информации о цвете линии switch linecolor case 1

strplot = strcat(strplot, r); case 2

strplot = strcat(strplot, *b); case 3

strplot = strcat(strplot, k); otherwise

error[неизвестный цвет линии)

end

% Добавление информации о маркере switch marker case О

strplot = strcat(strplot, ); case 1

strplot = strcat(strplot, *•); case 2

strplot = strcat (strplot, o); otherwise

error(неизвестный тип маркера)

end

% Завершение генерации строки с командой plot 3trplot - strcat(strplot, )); % Выполнение команды plot eval(strplot)

Ч Запрос на продолжение работы

flag = input(1 Продолжить работу? (у — да, п — нет), s);

end


Обработку ввода пользователя можно производить в бесконечном цикле, задав в качестве условия цикла while единицу, а выход из цикла производить Оператором break.

Организация вывода текстовых результатов

Вывод результатов в удобно читаемой форме — одно из необходимых условий хорошо написанной программы. Для отображения в командном окне результатов работы файл-программы или файл-функции мы применяли функцию disp совместно с преобразованием чисел в строки или допускали вывод значения выражения в командное окно, не завершая оператор присваивания точкой с запятой. Этих приемов зачастую оказывается недостаточно для написания программы, которая общается с пользователем через командное окно.

Один из способов организации вывода текстовых данных в командное окно состоит в специальном вызове функции fprintf (которую вы использовали для записи текстовых файлов). Если в качестве идентификатора файла указать единицу или вообще пропустить его, то вывод происходит не в файл, а в командное окно. Создайте, например, файл-программу с текстом листинга 8.7, только исключите идентификатор файла f из списка входных аргументов функции fprintf. Запустите ее и убедитесь, что выводимая в командное окно информация соответствует той, которая ранее записывалась в текстовый файл.

Возможности отображения массивов данных в MATLAB не ограничиваются их выводом в текстовый файл или командное окно. Функция openvar позволяет открыть окно редактора массивов Array Editior с содержимым числового массива, массива строк, структур или ячеек, определенного в рабочей среде. Строка или строковая переменная с именем массива указываются во входном аргументе openvar. Например, если в рабочей среде есть массив mas, то следует написать openvar ( mas ). Примите во внимание, что openvar работает только с переменными рабочей среды. Переменные, созданные внутри файл-функции, являются локальными и не видны в рабочей среде, поэтому эта возможность доступна только в файл-программах (классификация переменных описана в разд. "Подфункции" и "Вложенные функции" главы 5).

Файл-функции с переменным числом аргументов

Большинство стандартных функций MATLAB допускают обращение к ним с различным числом входных и выходных аргументов, например, функция


для нахождения минимума fminbnd, которую можно вызвать с одним или более выходными аргументами и с тремя или более входными. При этом алгоритм fminbnd адаптируется к выбору пользователя и осуществляет требуемую последовательность действий. Обратитесь к встроенной справке по fminbnd при помощи help с именем функции для того, чтобы узнать о всевозможных вариантах вызова. В данном разделе описано создание собственных файл-функций, способных работать с переменным числом аргументов. Вам понадобится использовать массивы ячеек, основные сведения о которых вы получили при чтении этой главы (см. разд. "Массивы ячеек" данной главы).

Разберем сначала принцип организации файл-функции с переменным числом входных аргументов на следующем примере. На плоскости задано произвольное количество кругов (координатами центров и радиусами (xl, yl, Rl), (х2, у2, Rl) и т. д.) и точка с координатами <рх, ру). Требуется определить, лежит ли точка внутри какого-либо круга или нет (рис. 8.7).

Напишем файл-функцию point, входными аргументами которой будут координаты точки и нескольких вектор-строк из трех элементов, задающих положение кругов, а выходным — число, единица или ноль в зависимости от попадания точки в один из кругов. Для случая, изображенного на рис. 8.7, вызов функции point будет выглядеть следующим образом:

f = point(рх, ру, [xl yl Rl], [х2 у2 R2], [хЗ уЗ R3], [х4 у4 R4])

Первые три входных аргумента являются обязательными, но число векторов-строк соответствует числу кругов и может быть различным. MATLAB предлагает простой способ решения проблемы. Все входные аргументы упаковываются в специальный массив (вектор) ячеек varargin, каждый аргумент занимает ровно одну ячейку так, как показано на рис. 8.8.

Рис. 8.7. Расположение кругов и точки



0 ... 147 148 149 150 151 152 153 ... 365