
- •Тема 1. Назначение и структура matlab
- •2.Сравнение matlab с другими математическими пакетами
- •3.Интерфейс пользователя пакета matlab
- •4.Шесть основных компонент интерфейса пользователя matlab
- •6.Восстановление расположения окон интерфейса matlab
- •7.Назначение окна Command Window
- •8.Назначение окна Workspace Browser
- •9.Назначение окна Current Directory
- •Назначение окна Command History
- •Назначение окна Figure
- •Назначение окна m-file Editor
- •Назначение Help & Demo
- •Интерактивный режим работы.
- •Составные части командного окна Command Window.
- •Приглашающий символ командной строки.
- •Разделение логической команды на несколько физических строк.
- •Получение интерактивной справки.
- •Вывод списка всех переменных рабочего пространства Workspace.
- •4) 2.4.1. Вектор-строки
- •5) При задании матрицы
- •Операторы управления: операторы ветвления и операторы цикла
- •Условный оператор if
- •Оператор переключения switch
- •Оператор for
- •Оператор цикла while
- •Операторы break,continue
- •Векторизация алгоритма
- •Обработка исключительных ситуаций
- •Тема 4.
- •Режимы работы MatLab
- •Типы м-файлов
- •Различия между м-сценарием и м-функцией
- •Как создать функцию в MatLab
- •Типовая структура м-файла
- •Оператор заголовка функции
- •Входные/выходные параметры функции
- •Что является признаком конца функции
- •Как оформить комментарий
- •Типы функций
- •Первичные функции
- •Подфункции
- •13Анонимные функции
- •14 Частные функции
- •15 Видимость имен функций
- •16 Проверка параметров m-функций
- •19. Устойчивые переменные
- •20 Перегрузка функции
- •21 Отладка m-функций
- •7) 5.3. Методы класса
- •13. Вывод на печать display
- •14.Дифференцирование и интегрирование: diff, int
- •15. Вычисление корней полинома
- •7) Гистограммы
- •8) Изменение свойств линии
- •9)Трехмерная графика
- •15 Вопрос
- •Пример чтения графического файла
- •Тема 7. Основы дескрипторной графики.
- •5.Графический объект Root
- •6. Графический объект Figure
- •7. Графический объект Axes
- •Тема 10
19. Устойчивые переменные
Устойчивые переменные ( persistent variables ) – это локальные переменные, сохраняющие свое значение между вызовами функции. Устойчивые переменные обладают следующими свойствами:
Устойчивые переменные объявляются и используются только в пределах M-функции.
При объявлении устойчивой переменной MATLAB присваивает ей значение []. Затем переменной присваивается требуемое значение.
Система MATLAB не очищает устойчивые переменные, пока функция существует. Значение устойчивых переменных сохраняется от одного вызова функции до другого.
Переменная должна быть объявлена устойчивой до того, как она будет использоваться в функции. Поэтому обычно объявление переменных устойчивыми помещается в начало функции.
Объявить устойчивую переменную можно при помощи команды persistent name _1,…
MATLAB очищает все устойчивые переменные, используемые в функции, если функция очищается по команде clear func _ name или если редактируется M-файл, содержащий данную функцию.
20 Перегрузка функции
Перегруженные функции в MATLAB действуют по такому же принципу, что и перегруженные функции большинства языков программирования. Перегрузка используется для создания функций, отвечающих различным типам входных данных.
21 Отладка m-функций
В среде программирования MATLAB имеются возможности отладки разрабатываемых функций, тоесть существуют способы, при помощи которых можно выявить месторасположение ошибок и их причину. При возникновении ошибки в процессе выполнения M-функции в командное окно выводится приблизительное диагностическое сообщение и номер строки, в котором, по мнению MATLAB, произошла ошибка. Другим способом отладки функции является применение точек останова и пошагового выполнения функции при помощи встроенного редактора- отладчика medit.exe . Чтобы поставить точку останова на какой-либо строке кода функции, следует установить курсор на нужной строке и нажать клавишу < F12 > . Повторное нажатие клавиши <F12> на этой строке убирает точку останова. Точку останова можно поставить также,выполнив команду меню Debug|Set / Clear Break Point. В строке слева появляется красный кружок, указывающий на то, что в данной строке проставлена точка останова.После этого, не закрывая окна редактора- отладчика, следует переключить при помощи мыши фокус ввода в командное окно MATLAB и обычным образом запустить функцию на выполнение. Система MATLAB выполнит все команды до первой точки останова и сделает паузу. В строке останова появится зеленая стрелка. Теперь можно просматривать фактические значения входных параметров функции, текущие значения глобальных и локальных переменных, значения выражений. Чтобы просмотреть значение переменной, достаточно подвести курсор к ее имени в тексте функции, после чего на экране появится всплывающий желтый прямоугольник со значением переменной внутри него. С одержимое любой переменной также может быть выведено в командном окне обычным указанием ее имени и нажатием клавиши <Enter>. В режиме отладки приглашение командной строки принимает вид K >> . Затем можно продолжить работу программы в одном из отладочных режимов.
ТЕМА 5
1) isa(p,’polynom’) используется чтобы определить, является ли входной аргумент обьектом данного класса.
Конс труктор создает структуру и инициализирует ее поля, используя входные данные. Затем из этой структуры конструируется сам объект при помощи встроенной функции class () . У этой функции есть два обязательных параметра. Первый – структура, которая будет представлять данные объекта, а второй – текстовая строка, содержащая имя создаваемого класса.
2) - Инкапсуляция (Encapsulation of Data and Methods)
- Перезагрузка функций и операций (Function and operator overloading)
- Наследование (Single and Multiple Inheritance )
- Агрегирование ( Aggregation )
3) В чем отличие «создать класс» и «создать объект»? Объект - это экземпляр класса. Класс - это абстрактная сущность. Рассмотрим последовательность создания класса в среде MATLAB на примере класса ро-lynom, подробно описанном в справочной документации по пакету. • Один из первых шагов создания нового класса - выбор структуры данных для использования в классе. Объекты хранят свои данные в структурах. Все поля структуры, хранящей данные класса, являются скрытыми (private), т. е. их поля доступны только для методов данного класса и ею потомков Напрямую в выражениях их использовать нельзя.
• Объекты нового класса создаются при помощи специальной функции-конструктора класса. Re имя должно совпадать с названием класса. В рассматриваемом примере это функция polynom, описанная в файле
polynom.m.
Класс содержит функции-методы для работы с его объектами, реализованные с помощью М-файлов. Функция-метод - это функция, один из аргументов которой - объект данного класса. Имя М-файла - имя действия, реализованного функцией, описанной в этом файле. Например, для сложения двух полиномов должна быть реализована функция сложения, т. е. должен существовать файл pi us. m.
Функции-методы класса должны размещаться в специальной паике-контейнерс каталоге с именем ...\@className. Имя наминается с символа ' @', а в остальном должно совпадать с именем класса И MATLAB класс - это папка, функции-методы класса - это М-фанлы, находящиеся в этом каталоге.
Методы класса можно вызывать откуда угодно.
Для работы с классом текущий каталог Current Directory должен быть открыт на папке, содержащей папку @className.
Папка GclassName должна входить в каталог, определенный в пути поиска Search Path среды MATLAB. Саму папку-контеннер методов добавлять в путь MATLAB не нужно. Например, если класс ро-lynom находится в с:\temp\@polynom, то необходимо ввести командную строку » addpath c:\temp
В классах существуют скрытые частные (private) функции, размещаемые в папке @className\private\. Все файлы, находящиеся в этом подкаталоге, доступны только внутри методов данного класса. Пользователь не может их вызывать из командной строки или из других каталогов. Private-функции не имеют в качестве входного аргумента объект класса. Private-функции обычно используются как вспомогательные функции для реализации задач класса и не оперируют непосредственно с объектом класса.
После каждого переопределения класса (изменение названия или числа полей класса, редактирование функций) необходимо ввести изменения в сеанс МАТ1.АВ, для чего подается команда » clear classes Эта команда удаляет из памяти MATI.AB «старое» опреде-ление класса а также очищает рабочее пространство Workspace
4) В MATLAB существует ряд функций (табл. 5.3), позволяющих работать с классами, а также проверять принадлежность объекта какому-либо классу.
Таблица 5.3. Функции дли pa6oiu с классами
Функция |
Описание |
class(р) |
Определение класса объекта |
isa(p, 'polynom') |
Проверка при надежности объекта данному класс\ |
isobject(р) |
Выявление принадлежности объекта какому-либо классу MATLAB |
methods ('polynom') |
Вывод списка методов для данного класса |
whos p |
Вывод подробной информации об объекте |
5) Язык программирования МАТЛАВ не имеет декларации новых классов и типов. Объекты класса создаются в момент вызова функции-конструктора этою класса. Таким образом, функция-конструктор - это первая функция, которая должна быть определена при создании нового класса и размещена в папке-контейнере класса. Имя функции-конструктора совпадает с названием класса и разметается в М-файле с аналогичным именем.
Рассмотрим пример конструктора, создающего объекты класса polynom. Этот конструктор должен находиться в М-файле @polynom/polynom.m. Данный конструктор создает полином из заданного вектора коэффициентов полинома при убывающих степенях переменной
function р = polynom(а)
%POLYNOM Polynomial class constructor. % p = POLYNOM(v) if nargin == 0 p.с = [];
p = class(p, 'polynom1); elseif isa(a,'polynom*) p = a; else
p.с = a<:>.■;
p = class(p,'polynom*);
end
При вызове к'онструктора динамически создается объект, который может быть инициализирован некоторыми начальными значениями. В зависимости от способа вызова конструктора существует три типовые ситуации:
Конструктор по умолчанию. Конструктор вызывается без аргументов, например: р = polynom (). В этом случае создается шаблон объекта, обычно с пустыми нолями В отдельных случаях поля инициализируются некоторыми начальными значениями.
Конструктор копирования. На вход конструктора подается объект того же класса, что и создаваемый объект, например: а = polynom (р). В этом случае конструктор обычно возвращает копию объекта. При этом в конструкторе необходимо использовать функцию isa(p,' polynom'), чтобы определить, является ли входной аргумент объектом данного класса. • Конструктор с параметрами. Конструктору передаются входные аргументы, например: а = polynom ([3 0 -2 5]). Конструктор создает структуру и инициализирует ее ноля, используя входные данные. Затем из этой структуры конструируется сам объект при помощи встроенной функции class (). У этой функции есть два обязательных параметра. Первый - структура, которая будет представлять данные объекга, а второй - текстовая строка, содержащая имя создаваемою класса.
Подобная последовательность действий обычна для конструктора объектов любого класса. Структура, хранящая данные объекта, может быть сколь угодно сложной.
6) В MATLAB нет эквивалента методу destructor. Для удаления объекта класса из рабочего пространства Workspace используется функция clear.