
- •Содержание
- •Введение
- •1. Описание панели инструментов
- •1.1. Командное окно
- •1.2. Окно редактирования и отладки
- •1.3. Окно рабочей области
- •1.4. Пути доступа к m-файлам
- •1.5. Окно справки Help Window
- •2. Переменные, операторы и функции системы matlab
- •2.1. Переменные, константы и специальные символы
- •2.2. Арифметические операторы
- •2.3. Операторы и функции отношения
- •2.4. Логические операторы
- •2.5. Элементарные функции
- •2.6. Массивы и матрицы
- •3. Графические средства системы matlab
- •3.1. Основные операторы и функции графики
- •3.2. Окно графики
- •3.3. Графика в прямоугольных координатах
- •3.4. Масштабирование осей и вывод на экран
- •3.5. Графика в полярных координатах
- •3.6. Построение столбиковых даграмм и гистограмм
- •3.7. Отображение трехмерных поверхностей
- •4. Программирование в системе matlab
- •4.1. Структура m-файла сценария и функции
- •4.2. Ввод и вывод иформации
- •4.3. Форматы вывода чисел
- •4.4. Функции nargin и nargout
- •4.5. Локальные и глобальные переменные
- •4.6. Управление последовательностью выполнения
- •4.7. Ускорение вычислений
- •4.8. Примеры программирования с использованием средств пакета Matlab
- •5. Система simulink
- •5.1. Библиотека модулей
- •5.2. Раздел Sinks (получатели сигналов)
- •5.3. Раздел Sources (источники сигналов)
- •5.4. Раздел Continuous (аналоговые блоки)
- •5.5. Раздел Discrete (дискретные блоки)
- •5.6. Раздел Function & Tables (функции и таблицы)
- •5. Логические операторы (&& | | !).
- •5.7. Раздел Math (математические блоки)
- •5.8. Раздел Nonlinear (нелинейные компоненты)
- •5.9. Раздел Signal & Systems (блоки преобразования сигналов и создания систем)
- •5.10. Применение системы Simulink в задачах моделирования динамических систем
- •Литература
4.4. Функции nargin и nargout
Функции nargin и nargout позволяют определить количество входных и выходных аргументов вызываемой функции. Эту информацию в дальнейшем можно использовать в операторах условия для изменения хода вычислений. В примере 4.1 приведена m-функция ctrb, в которой имеется оператор error. Этот оператор сообщает об ошибке, если значение переменной nargin не равно 2. Рассмотрим еще один пример использования функции nargin.
Пример 4.2. Использование функции nargin.
function y = tst(a,b)
if(nargin = = 1)
y = a.^5 +1;
elseif (nargin = = 2)
y = a^2+ b^2;
end
Если при обращении к m-функции выходной аргумент не указан, по умолчанию выводится первый аргумент. Для формирования и вывода последующих аргументов требуется организовать соответствующее обращение к m-функции.
4.5. Локальные и глобальные переменные
Обычно каждая m-функция, задаваемая в виде m-файла, имеет собственные локальные переменные, которые отличны от переменных других функций и переменных рабочей области. Однако если несколько функций и рабочая область объявляют некоторую переменную глобальной, то все они используют единственную копию этой переменной. Любое присваивание этой переменной распространяется на все функции, где она объявлена глобальной. Пример использования команды global приведен в разделе 4.8 (см. пример 4.8)
Для работы с глобальными переменными необходимо:
объявить переменную как глобальную в каждой m-функции, которой необходима эта переменная. Для того чтобы переменная рабочей области была глобальной, необходимо объявить ее как глобальную в m-сценарии;
в каждой функции использовать команду global перед первым появлением переменной; рекомендуется указывать команду global в начале m-файла.
Передавать значения переменных можно также осущестлять за счет введения дополнительных входных переменных в m-функции (см. пример 4.7).
4.6. Управление последовательностью выполнения
операторов
Существуют четыре основных оператора управления последовательностью исполнения инструкций:
оператор условия if, в сочетании с оператором else и elseif выполняет группу инструкций в соответствии с некоторыми логическими условиями;
оператор переключения switch, в сочетании с операторами case и otherwise выполняет различные группы инструкций в зависимости от значения некоторого логического условия;
оператор условия while выполняет группу инструкций неопределенное число раз, в соответствии с некоторым логическим условием завершения;
оператор цикла for выполняет группу инструкций фиксированное число раз. Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления.
Рассмотрим подробней эти операторы.
1) Оператор условия if .... end вычисляет некоторое логическое выражение и выполняет соответствующую группу инструкций в зависимости от значения этого выражения. Если логическое выражение истинно, то Matlab выполнит все инструкции между if и end, а затем продолжит выполнение программы в строке после end. Если условие ложно, то Matlab пропускает все утверждения между if и end и продолжит выполнение в строке после end. Операторы if ... else ... end и if ... elseif ... end создают дополнительные ветвления внутри тела оператора if. Оператор elseif может многократно использоваться внутри оператора условия if. Если в операторе if условное выражение является пустым массивом, то такое условие ложно. Пример использования оператора if….end приведен в разделе 4.8 (пример 4.5).
2) Оператор switch ... case 1 ... case k ... otherwise ... end выполняет ветвления, в зависмости от значений некоторой переменной или выражения. Ключевые слова case и otherwise разделяют эти группы. Оператор switch работает, сравнивая значение вычисленного выражения со значениями групп case. Для числовых выражений оператор case выполняется, если <значение>== <выражение>. Для строковых выражений, оператор case истинен, если strcmp(значение, выражение) истинно.
Пример 4.3. Применение оператора switch. В качестве примера рассмотрим следующий m-сценарий:
X=input('X=');
Y=input('Y=');
switch(X==Y)
case 0, 'не равны'
case 1, 'равны'
otherwise
error ('ошибка')
end
3) Оператор цикла for .... end выполняет инструкцию или группу инструкций предопределенное число раз. По умолчанию приращение равно 1. Можно задавать любое приращение, в том числе отрицательное. Для положительных индексов выполнение завершается, когда значение индекса превышает <конечное значение>; для отрицательных приращений выполнение завершается, когда индекс становится меньше чем <конечное значение>. Иллюстрация использования оператора for….end приведена в примере 4.5.
4) Оператор цикла с неопределенным числом операций while ... end многократно выполняет инструкцию или группу инструкций, пока управляющее выражение истинно. Если выражение использует массив, то все его элементы должны быть истинны для продолжения выполнения. Чтобы привести матрицу к скалярному значению, следует использовать функции any и all. Иллюстрация использования оператора while….end приведена в примере 4.6.
Кроме того, для управления последовательностью выполнения операторов используется оператор break. Этот оператор позволяет прерывать выполнение циклов for и while. При использовании оператора break во вложенных циклах выход осуществляется только из самого внутреннего цикла.