- •Учебное пособие
- •Казань – 2007
- •Содержание Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
- •Часть 1. Основные сведения о системе matlab.
- •Часть 2. Обзор расширений matlab
- •Введение.
- •Часть 1. Основные сведения о системе matlab.
- •Операции с рабочей областью.
- •3. Переменные и функции системы matlab.
- •Формирование векторов и матриц.
- •Создание и отладка программных файлов.
- •Работа с файлами.
- •Средства создания баз данных.
- •8. Графика, анимация.
- •Графический интерфейс пользователя (gui).
- •Сообщения об ошибках, справочная система matlab.
- •Интерфейс системы matlab.
- •Часть 2. Обзор расширений matlab.
- •Пакеты математических вычислений.
- •Пакеты для обработки сигналов и изображений.
- •Пакеты анализа и синтеза систем управления.
- •Некоторые другие пакеты.
- •Часть 3. Примеры расчетов, задания для практических занятий.
- •Тема 1. Работа в режиме прямых вычислений.
- •Тема 2. Программирование, работа с файлами.
- •Тема 3. Вычисление корней полинома и нулей функции.
- •Тема 4. Работа с матрицами, системы линейных алгебраических уравнений.
- •Тема 5. Численное дифференцирование и интегрирование.
- •Тема 6. Численное решение дифференциальных уравнений.
- •Тема 7. Использование прикладных пакетов.
- •Тема 8. Структуры.
- •Тема 9. Графика.
- •Тема 10. Графический интерфейс пользователя (gui).
- •Приложение. Основные команды ядра системы matlab.
- •Литература
Создание и отладка программных файлов.
Программами в системе MATLAB являются m-файлы текстового формата, содержащие запись программ в виде программных кодов. Основными средствами программирования являются:
данные различных типов,
операторы,
функции пользователя,
управляющие структуры,
системные операторы и функции,
средства расширения языка.
В MATLAB определены следующие основные типы данных: single, double, char, logical, sparse, cell, struct, function_handle, Java classes и др. Кроме того, предусмотрен тип данных UserObject (тип данных, определяемый пользователем). Каждому типу данных можно соотнести характерные для него операции.
Язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк и оператора безусловного перехода GO TO. Имеются управляющие структуры следующих типов:
условный оператор if...elseif...else...end, простейший вариант: if условие инструкции end;
цикл типа for...end, конструкция цикла имеет вид: for var=b:s:f , инструкции, end, где b – начальное значение переменной цикла var, s – шаг (по умолчанию s=1), f – конечное значение переменной var;
цикл типа while...end, конструкция цикла имеет вид: while условие инструкции end, досрочный выход из цикла может быть реализован с помощью операторов break и continue;
переключатель switch...case...otherwise...end;
конструкция try...catch...end.
Имеются также функции диалогового ввода и вывода:
r=input (‘String’) или input (‘String’,’s’);
disp(X).
Функция pause (или pause(N)) позволяет приостановить выполнение программы, N – количество секунд. Функции tic и toc позволяют включить и выключить таймер.
Программы вызываются по имени, под которым записаны в виде файла с расширением .m. Имя программы начинается с латинской буквы и состоит из таких букв и цифр. При первом обращении программа ищется на диске. Рекомендуется записать программу в текущую директорию. Поиск m-файла по ключевому слову осуществляется командой lookfor. Путь к программе можно указать командой path.
Программы бывают двух видов: сценарии (scripts) и функции (functions). Программа-скрипт представляет собой набор команд без входных и выходных параметров. Она может использовать все переменные рабочей области, а не только те, что создаются в ней. Собственные переменные скрипта располагаются в рабочей области без защиты от внешнего доступа, что позволяет передать управление из скрипта в командную строку с помощью команды keyboard (без параметров), при этом работа в командной строке заканчивается командой return. Таким образом, скрипт удобен для работы в интерактивном режиме, но требует повышенного внимания при использовании в нем своих переменных.
Пример программы-скрипта (определение локальных максимумов вещественного вектора):
m=length(x); % вычисление длины вектора x
v=2:m-1; % формирование вектора индексов
i=find(x(v-1)<x(v)&x(v)>x(v+1))+1; % поиск индексов локальных максимумов
y=x(i); % значения локальных максимумов
После набора программы ее следует сохранить, например, под именем lokmax.m. Теперь возможен ее вызов из командной строки:
>> x=[1,2,-3,3,-2,4]; lokmax, [y;i]
y =2 3
i =2 4
Комментарий, включенный в программу, выводится командой:
>> help имя файла
Первая строка программы-функции имеет вид: function [y1,y2,...yj]=ff(x1,x2,...xi), где ff – имя функции, x1,x2,...xi – входные формальные параметры, y1,y2,...yj – выходные формальные параметры. Обращение к функции записывается так: [v1,v2,...vj]=ff(u1,u2,...ui), где u1,u2,...ui,v1,v2,...vj – фактические параметры. Входных аргументов у функции может и не быть. Все переменные программы-функции имеют локальный характер и недоступны для их использования извне. Если при создании файла-функции желательно применение глобальных переменных, то следует подать команду: global var1 var2... . Таким образом, программа-функция неудобна для использования в интерактивном режиме, но любая ее переменная может быть открыта для использования в командной строке.
Пример программы-функции (та же задача):
function [y,i]=lokmax(x)
m=length(x);
v=2:m-1;
i=find(x(v-1)<x(v)&x(v)>x(v+1))+1;
y=x(i);
После сохранения функции к ней можно обратиться из командной строки:
>> x=[1,2,-3,3,-2,4]; [y,i]= lokmax(x)
и получить тот же ответ.
Файлы-функции могут вызываться так же из других m-файлов. Начиная с версии 5.0 появилась возможность включать в тело основной функции подфункции. Они имеют идентичную конструкцию.
При создании программ-функций часто бывают полезны две функции:
nargin – возвращает число входных параметров данной функции;
nargout - возвращает число выходных параметров данной функции;
Иногда в программе-функции бывает необходимо выдать сообщение об ошибке, для этого служит команда error (‘сообщение’).
Важным этапом программирования является отладка программы. MATLAB располагает большими возможностями, облегчающими процесс отладки. В частности, полный листинг программного файла можно вывести с помощью команды:
>> type имя файла (или для вывода листинга с пронумерованными строками dbtype)
Для установки в тестируемый m-файл точек прерывания используются команды:
>> dbstop in M-file at lineno – установить точку прерывания в заданной строке;
>> dbstop in M-file at subfun – установить точку прерывания в подфункции;
>> dbstop if error – установить точку прерывания при сообщении об ошибке.
Команда dbstatus (без параметров) выводит список установленных в данной сессии точек прерывания. Для удаления точек прерывания используется команда dbclear с тем же синтаксисом, что и dbstop, например
>> dbclear M-file at lineno.
Для пошагового выполнения программы используется команда dbstep (или dbstep nlines для выполнения заданного числа строк).
Для редактирования и отладки m-файлов в MATLAB существует специальный многооконный редактор, выполненный как типичное приложение Windows. Он позволяет нумеровать строки, устанавливать контрольные точки, вычислять переменные по месту нахождения, получать справку и прочее (вход в редактор осуществляется из главного меню: (File – M-file).
