- •Программирование в среде Matlab Работу подготовил студент группы мп-31 Самсоненко Егор Введение
- •1. Работа в среде matlab
- •1.1 Командное окно
- •1.2 Система меню
- •1.3 Интерфейс matlab
- •2. Программирование в среде matlab
- •2.1 Команды ввода – вывода
- •2.1.1 Команды load и save
- •2.1.2 Форматные операции ввода-вывода
- •2.1.3 Команды для работы со стандартными файлами
- •2.2 Объектно-ориентированное программирование
- •2.3 Отладка
- •2.3.1 Отладка в командном режиме
- •2.3.2 Редактор medit и отладка
- •2.4 Разработка mex-файлов
2.1.3 Команды для работы со стандартными файлами
Для считывания аудио- и видеофайлов в стандартах au, wav и avi имеются соответственно команды auread, wavread и aviread. Аналогично для записи используются команды: auwrite, wavwrite и avi file. Это позволяет применять MATLAB для обработки и подготовки звуковой и видеоинформации.
В MATLAB поддерживается работа с данными электронных таблиц Lotus 123 и Excel. Для считывания и записи файлов в стандарте Lotus 123 используются команды wklread nwklwrite, а для считывания таблиц Excel имеется команда xlsread.
Кроме того, в MATLAB существует возможность работы с данными в формате hdf (Hierarchical Data Format). Этот машинно-независимый формат разработан для хранения научных данных.
2.2 Объектно-ориентированное программирование
Современное объектное программирование основано на введении новых типов данных (классов) и определении операций для них. В системе MATLAB существуют следующие стандартные классы: числовые массивы (double), двумерные разреженные матрицы (sparse), строки или массивы символов (char), структуры или массивы записей (struct), массивы ячеек (cell). Кроме того, некоторые расширения MATLAB используют свои классы.
В MATLAB тип переменной или соответствующий класс не объявляется и не описывается, а определяется автоматически при создании объекта. Например, при задании матрицы А=еуе(5) создается объект класса double, а по команде As=sparse(A) производится преобразование матрицы А в разреженную матрицу As, то есть создается новый объект класса sparse.
Объекты нового класса создаются при помощи специальной m-функции – конструктора класса, имя которой совпадает с названием класса. Для нового класса также нужно определить методы обработки объектов, написав соответствующие функции. Конструктор класса и функции обработки должны размещаться в каталоге, имя которого начинается с символа «@», а далее идет имя класса. Каталог класса является подкаталогом для каталога, описанного в пути доступа. Объекты класса реализуются в виде структур, поля которых видны только для методов, работающих с данным классом. При этом возможно доопределение существующих встроенных операторов, например, чтобы задать операцию умножения для объектов нового класса, в каталоге класса следует написать функцию mtimes.
Так, в каталоге symbolic находятся три подкаталога: @char, @sym, @symlibs. В подкаталоге @sym содержится конструктор класса – файл sym.m и множество других файлов, реализующих операции с символьными переменными.
При вызове конструктора динамически создается объект. Если конструктор вызывается без аргументов, то создается шаблон объекта, обычно с пустыми полями. Если на вход конструктора подается объект того же класса, то конструктор обычно возвращает сам введенный объект. Для проверки принадлежности объекта OBJ классу CLASS служит команда 1sa (0BJ.CLASS)
Функция class (MATLAB различает большие и малые буквы) определяет класс объекта при вызове class(OBJ) и переводит структуру S в объект класса CLASS при обращении class (S.CLASS). Команды работы с классами описаны в таблице 2.3.
Таблица 2.3
Команда |
Назначение |
Class |
Определение класса или создание объекта |
Isa |
Определение принадлежности объекта к классу |
isobject |
Выявление принадлежности объекта к какому-нибудь классу |
methods |
Вывод списка методов для данного класса |
inferiorto |
Указание подчиненности класса по отношению к некоторым классам |
superiorto |
Указание старшинства класса по отношению к некоторым классам |
При работе с объектами учитываются иерархия (старшинство) и наследование, когда объекты одного класса приобретают свойства других классов. При простом наследовании (один класс-родитель) дочерний объект включает все поля родительского объекта, и при работе с ним можно обращаться к методам родительского класса, кроме того, добавляются специфические для дочернего класса поля. При этом методы нового класса не могут применяться к объектам родительского класса. Для реализации множественного наследования (несколько классов родителей) применяется команда class (S, CLASS, PARENTl, PARENT2….), здесь из структуры S создается объект класса CLASS, наследующий свойства классов PARENT1, PARENT2.
В дополнение к наследованию поддерживается объединение частей в одно целое или агрегирование, то есть использование объектов в качестве полей для других объектов.
Чтобы использовать для объектов нового класса знаки основных математических операций, создаётся в каталоге функции с именами, которые отвечают за операции сложения, матричного умножения и т.д. Список имен математических операций можно получить по команде help*.
