Программирование в среде MATLAB

Изучение программирования в MATLAB. Использование команд Save и Load, операторы ввода и вывода для работы в командном окне. Отладка собственных программ. Интерфейс MATLAB. Отличия поздней версии MATLAB от более ранних. Средство Source Control Interface.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 25.12.2011
Размер файла 43,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Программирование в среде MATLAB

Введение

Система компьютерной математики MatLab является в настоящее время одним из наиболее эффективных инструментов для выполнения научно-технических расчетов, графической интерпретации полученных результатов и визуального моделирования. Эта система имеет удобный пользовательский интерфейс, развитый язык программирования, ядро символьных вычислений и множество дополнительных пакетов, таких, как Simulink, SimPowerSystem и другие.

Овладев навыками и приемами работы в системе MatLab, студенты технических специальностей университета смогут качественно и достаточно быстро проводить в ней нужные исследования и вычисления по курсовому и дипломному проектированию, применять систему для решения сложных инженерных задач.

1. Работа в среде MATLAB

Среда MATLAB включает интерпретатор команд на языке высокого уровня, графическую систему, пакеты расширений и реализована на языке С. MATLAB постоянно модернизируется, при этом расширяются возможности системы меню, совершенствуются старые и добавляются новые команды. Меню частично дублируют ряд команд и облегчают взаимодействие с многочисленными инструментами MATLAB. По-прежнему вся работа организуется через командное окно (Command Window), которое появляется при запуске программы matlab.exe. В процессе работы данные располагаются в памяти (Workspace), создаются графические окна для изображения кривых, поверхностей и других графиков

1.1 Командное окно

В командном окне в режиме диалога проводятся вычисления и активируются элементы среды МATLAB. Пользователь вводит команды или запускает на выполнение файлы с текстами на языке MATLAB. Интерпретатор обрабатывает введённое и выдаёт результаты: числовые и строковые данные, предупреждения и сообщения об ошибках.

Знаком «>>» в тексте помечаются строки ввода команд MATLAB, а результат будет располагаться на последующих строках. Если заранее результат не присвоить какой либо переменной, то результат запишется в стандартную переменную ans (сокращение от Answer). Чтобы посмотреть список используемых имён переменных, достаточно выполнить команду who. Команда whos выводит список переменных вместе с информацией о размерности, плотности заполнения и типе переменных. Туже информацию можно получить, обратившись к пункту меню File/Show Worcspase или к значку Workspase Browser. Если затем в окне Workspase Browser щёлкнуть дважды на идентификаторе нужной переменной, то в MATLAB Editor/Debugger появится содержимое этой переменной и станет доступным для изменения. Такое редоктирование возможно для матриц, но не распространяется на многомерные массивы и структуры.

Также вычисления можно выполнить, подготовив m-файл, называемый также файлом-сценарием или script-файлом, и запустив его на выполнение. Таким образом, в MATLAB можно приготовить файл с программой, протестировать его при помощи редактора-откладчика и выполнить, указав в строке ввода командного окна имя файла.

1.2 Система меню

Меню MATLAB состоит из пяти пунктов. Их назначения приведены в с таблице 1.1.

Таблица 1.1

Пункты

Назначение

File

Команды работы с файлами, свойствами окон, печать

Edit

Операции правки, команда очистки рабочей области

View

Включение/отключение строки состояния

Window

Список окон

Help

Справка, примеры и демонстрации

В таблице 1.2 описаны пункты меню File.

Таблица 1.2

Пункты

Назначения

Open Selection

Открытие файла, соответствующего выделенной функции, в окне редактора

Run script

Запуск т-файла

Load Workspace…

Считывание данных в рабочую область

Save Workspace As…

Сохранение данных рабочей области

Show Workspace

Просмотр данных в рабочей области

Show Graphics Property editor

Свойства графического редактора

Show GUI Layout Tool

Свойства графического интерфейса

Set Path

Подключение каталогов

Preferences

Назначение шрифтов, форматов и др.

Меню Edit содержит стандартные возможности (Undo, Cut, Copy, Paste, Clear, Select All) и команду очистки всех переменных в сеансе (Clear Session).

Меню View состоит из одного пункта-переключателя (Toolbar).

Меню Window позволяет переключаться от одного окна к другому, причем основное окно имеет номер 0, а нумерация графических окон начинается с 1.

Меню Help позволяет пользователю MATLAB ознакомится с программой, её характеристиками, описание команд и т.д. Панель основного окна содержит значки часто используемых операций: создание нового и открытие существующего m-файла, операции правки, команда отмены ввода (Undo), просмотр рабочей области (Workspace Browser), подключенные каталоги (Path Browser) и справка (Help Window).

1.3 Интерфейс MATLAB

Новая версия MATLAB сохраняет преемственность с предыдущими реализациями по языку, библиотекам команд, средствам отладки и пр. Изменения затронули интерфейс рабочего места (desktop), куда теперь включены средства работы с файлами, переменными и ассоциированными с MATLAB приложениями.

Ниже описано какие отличия поздней версии MATLAB от более ранних:

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

Список введенных в сеансе команд (History command) является новым инструментом, организующим просмотр, копирование и повторный запуск этих команд.

Новым средством является Launch Pad, обеспечивающий быстрый доступ к инструментам (Workspace, Path, GUI Builder), справке и документации.

Система справки обрела новый интерфейс, заменивший HelpDesk.

Просмотр каталогов является новым средством, обеспечивающим работу с файлами, поиск и замену строк в файлах.

Рабочая область (Workspace Browser) обеспечивает просмотр и внесение изменений в переменные, а также предоставляет доступ к графическому интерфейсу для считывания данных из бинарных и текстовых файлов Import Wizard.

Редактор массивов (Array Editor) предназначен для просмотра и редактирования матриц, строк и массивов ячеек из строк, имеется возможность изменения формата представления данных.

Редактор-отладчик (Editor/Debugger) обеспечивает создание, редактирование и отладку m - файлов. Модернизация расширила возможности редактора, в частности добавлены следующие возможности: показ номеров строк, превращение массива строк в комментарии, изменение цветов для выделения синтаксических конструкций, поиск фразы в нескольких файлах, возможность восстановления файлов при неудачном завершении предыдущего сеанса, подсказки по данным, сохранение точек останова при записи файла.

Окно Set Path дает доступ к каталогам и предоставляет новый интерфейс вместо Path Browser.

Профилер теперь поддерживает оценку времени выполнения файлов источников.

Добавилось новое средство Source Control Interface.

Включена поддержка Windows 2000 для документов Notebook.

Новым в системе справки является то, что почти вся документация подготовлена в виде HTML-файлов. Она лучше всего отражает текущее состояние системы MATLAB. Доступ к справочной информации реализуется при помощи просмотрщика, учитывающего специфику и организацию продуктов семейства MATLAB. Раскрываемые оглавления по системам, индексация по темам, расширенные поисковые возможности - все это позволяет легко найти нужную информацию. Новым является сохранение закладок и использование контекстного меню при нажатии правой кнопки мыши.

Для быстрого считывания в рабочую область двоичных или ASCII данных удобно пользоваться системой Import Wizard. Ряд команд поддерживает совместимость со старыми названиями.

Возможности компилятора MATLAB расширились, для получения справки нужно набрать mсс - ?. Добавились различные способы оптимизации кода, поддерживаются команды pause и continue. Библиотека MATLAB C/C++ Graphics Library позволяет использовать графические возможности MATLAB и интерфейс GUI для запускаемых независимо от MATLAB приложений, реализованных на С или C++. Значительно усовершенствована производительность всех функций математической библиотеки, в частности добавлены быстрые скалярные версии многих функций, графическая библиотека теперь поддерживает команды печати. В создаваемых программах можно использовать многие элементы MATLAB: текст, сетки, линии, многоугольники, компоненты графического интерфейса (меню, кнопки, диалоговые окна). Для создания таких приложений следует использовать компилятор MATLAB, вызов процедур MATLAB C/C++ Graphics Library из модулей С и C++ не поддерживается. Внесены изменения в библиотеку математических процедур MATLAB C/C++ Math Library.

При реализации новых возможностей среды MATLAB использована технология Java. Однако поддержку Java можно отключить, для этого достаточно запустить программу matlab. exe с параметром - nojvm. В этом случае интерфейс аналогичен интерфейсу MATLAB 5.3.

программирование matlab отладка интерфейс

2. Программирование в среде MATLAB

Изначально MATLAB был реализован на Фортране, и, хотя современные версии пишутся на С, язык MATLAB или М-язык конструкциями и отчасти синтаксисом напоминает Фортран. М-язык Является языком высокого уровня и предоставляет достаточные возможности для реализации разнообразных вычислений, задач обработки данных и т.д. Этот язык сконструирован для решения математических задач и содержит специальные средства для эффективного выполнения математических операций.

2.1 Команды ввода - вывода

В MATLAB поддерживается работа с внешними данными, подготовленными в различных форматах. Такая работа осуществляется при помощи набора эффективных команд. Для записи и считывания информации разработан специальный формат mat-файла, избавляющий пользователя от необходимости вникать в детали хранения данных. Более того, при помощи функций из библиотеки С можно создавать приложения с доступом к mat-файлам. Также имеется набор команд для форматного ввода и вывода информации, для записи бинарных файлов и для работы с некоторыми типами стандартных файлов.

2.1.1 Команды load и save

Мощными и удобными в работе являются команда save для сохранения информации и команда load для ее считывания. По умолчанию данные записываются в стандарте mat-файла. Схематически обращение к команде save выглядит следующим образом:

save [ИМЯ] [-ПАРАМЕТРЫ] [ПЕРЕМЕННЫЕ]

В квадратных скобках даны необязательные параметры, при отсутствии которых запись производится согласно системным назначениям. Когда имя файла ИМЯ не указано, то данные будут сохранены в двоичном файле matlab.mat. Если расширение файла пропущено, то данные запишутся в файл ИМЯ.mat. Список величин, подлежащих записи, задается параметром ПЕРЕМЕННЫЕ, при отсутствии которого сохраняются все данные из рабочей области.

Дополнительные ПАРАМЕТРЫ могут принимать следующие значения:

· ascii - сохранение в виде ASCII-файла с мантиссой из восьми цифр;

· ascii-double - сохранение в виде ASCII-файла с шестнадцатизначной мантиссой;

· append - дозапись в существующий файл.

При сохранении информации в двоичном коде для записи вещественных чисел используется 8 байт, а для целочисленных переменных могут применяться следующие форматы: int8 (однобайтное целое число от -128 до 127), intl6 (двухбайтное целое число) и int32 (четырехбайтное целое число).

Назначения параметров для команды load аналогичны описанным ранее:

load [ИМЯ] [-ПАРАМЕТРЫ] [ПЕРЕМЕННЫЕ]

Из файла ИМЯ считываются только переменные, перечисленные в списке ПЕРЕМЕННЫЕ, а отсутствие списка вызовет считывание всех величин, сохраненных в файле ИМЯ.

Данные из ASCII-файла с именем NAME.ext можно считать по команде load NAME.ext

Сами данные должны быть организованы в виде массива с одинаковым числом элементов во всех строках, иначе при считывании данных будет выведено сообщение об ошибке. По прочтении данные будут помещены в массив с именем NAME.

Обращаться к командам load и save можно так же, как к функциям.

Использование вызова функции удобнее, если аргумент-строка формируется из нескольких частей. Например, можно предложить следующий фрагмент для считывания и последующей обработки данных дневных наблюдений за июнь, записанных в файлах Junel.dat, June2.dat и т.д.

To же самое, но с потерей эффективности (работает интерпретатор), можно реализовать при помощи следующего фрагмента:

» for n=l:30. s=[«load June» int2str(n)».dat»].eval(s).

% Обработка данных

end

Записать и считать переменные с общей частью в имени можно при помощи знака «*», например, чтобы сохранить все переменные, начинающиеся с сочетания abc, достаточно команды

» save abc*

2.1.2 Форматные операции ввода-вывода

Для операций ввода-вывода с использованием форматов данных и работы с бинарными файлами применяются команды, напоминающие стандартные функции языка С.

Перед началом записи или чтения нужный файл следует открыть при помощи команды

FI=fopen ('NAME'. 'FLAG')

Имя файла NAME должно содержать путь, если файл берется из каталога, не указанного в списке каталогов Path Browser. Строковая переменная ' FLAG' определяет тип файла и способ работы с ним: ' t' - текстовый файл, ' b' - бинарный файл, ' г' - чтение, V - запись, " г+' - чтение и запись одновременно, ' а' - добавление в конец файла. Например, для чтения бинарного файла следует задать флаг ' rb', для записи текстового - 'wt'. Полученный в результате выполнения операции fopen числовой идентификатор FI используется в качестве параметра для функций fread и fwrite. Если открыть файл не удалось, то FI=-1. Чтобы закрыть файл, надо выполнить команду fclose(FI). Список команд ввода-вывода приведены в таблице 2.1.

Таблица 2.1

Имя

Назначение

Fopen

Открытие файла

Fclose

Закрытие файла

Fread

Считывание данных из файла

Fwrite

Запись данных в файл

f scanf

Считывание форматированных данных из файла

Fprintf

Запись данных в файл или вывод на экран

Fgetl

Считывание строки из файла без служебных символов

Fgets

Считывание строки из файла со служебными символами

dlmread

Чтение данных с разделителями из текстового файла

textread

Чтение форматированных данных из текстового файла

Команда fread применяется для чтения бинарных файлов:

[AXOUNT]=fread (FI.SIZE.'PREC'.'SKIP')

Здесь А - имя матрицы, куда заносятся считываемые данные, a COUNT - число прочитанных элементов. Если дополнительный параметр SIZE отсутствует, то считывается весь файл, целое число N в качестве SIZE задает считывание N элементов и формирование вектора-строки, а при указании в качестве SIZE вектора [М, N] формируется матрица размера [M.N], причем параметр N может принимать значение inf. Параметр 'PREC задает число бит для записи чисел. Например, текстовая строка 'float64' указывает, что данные следует записывать в формате двойной точности, по 8 байт на число, а четырехбайтовый формат записи целых чисел задается строкой 'integer*4'. Перечень допустимых форматов можно получить по справке help fread. Дополнительный параметр 'SKIP' определяет число байтов, которое должно быть пропущено после считывания очередного элемента.

Команда fwrite используется для записи бинарных файлов:

COUNT=fwrite (FI, PARA.'PREC.'SKIP')

Здесь FI - идентификатор файла, PARA - имя записываемой переменной, а назначение остальных параметров то же, что и для команды fread.

Если же при чтении не определить структуру матрицы или указать иной формат для чтения, то результатом будет вектор-строка из элементов, число которых и сами значения определяются форматом считывания.

Для считывания части данных используется функция f seek (FI, NUM.' FLAG'), служащая для перемещения на целое число NUM позиций, причем положительное NUM означает продвижение к концу файла, а отрицательное - к началу файла. После открытия файла указатель установлен на первый байт. После считывания очередного числа указатель переместится на столько байтов, каков формат чтения. Текущее положение выводится по команде ftell (FI). Для проверки достижения конца файла служит команда feof (FI). Для возврата в начало файла можно использовать функцию frewind (FI).

Бинарные файлы являются просто потоками байтов, а для работы с текстом, разбитым на строки, используются текстовые файлы. Такие файлы могут содержать как текст, так и числовую информацию, которую для записи предварительно следует перевести в строковые переменные при помощи команд num2str и int2str. Для чтения информации из текстовых файлов применяются функции fgetl, fgets и fscanf. Для записи служит функция fprintf, причем если файловый идентификатор равен единице или отсутствует, то вывод идет на экран. Для чтения и записи применяются форматные спецификации. Спецификации при вводе и выводе описаны в таблице 2.2.

Таблица 2.2

Код

Описание

% d

Чтение целого числа (при выводе - переменная double)

% u

Чтение положительного целого числа (при выводе - переменная double)

% f

Чтение вещественного числа (при выводе - переменная double)

% s

Чтение строки с пробелами (при выводе - переменная типа cellstr)

% q

Чтение строки (при выводе - переменная типа cellstr)

% c

Чтение символов, разделенных пробелами (при выводе - переменная типа cellstr)

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*.

2.3 Отладка

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

Для отладки программ и m-функций могут быть полезны следующие простые рекомендации:

Удалите подавляющие вывод данных на экран точки с запятой или замените их запятыми. Тогда анализ промежуточных результатов может указать причину неверной работы.

Расставьте по тестируемому тексту операторы keyboard. При выполнении этих операторов MATLAB приостановит работу, выведет приглашение, и в режиме интерпретатора можно будет анализировать промежуточные результаты (выводить содержимое интересующих переменных, переопределять величины).

Превратите m-функцию в файл script. Закомментируйте описания в начале файла и выполните полученный файл.

Кроме того, в MATLAB имеются специальные возможности для тестирования программ: набор команд отладки и средства редактора-отладчика medit. В этом случае отладка заключается в расстановке точек останова, прогоне программы от точки к точке и просмотре данных. Командный режим отладки является универсальным, поскольку одинаков для различных вычислительных систем, но для среды Windows режим отладки с использованием редактора medit выглядит нагляднее и проще.

2.3.1 Отладка в командном режиме

Если отладку проводить при помощи команд среды MATLAB, то для установки и снятия точек останова применяются команды dbstop и dbclear. Каждая из этих команд имеет несколько вариантов применения, в частности команда dbstop еще и задает режимы отладки, a dbclear отменяет назначения. Команды отладки приведены в таблице 2.4.

Таблица 2.4

Команда

Описание

Dbstop

Определить точку останова

Dbclear

Удалить точку (точки) останова

Dbcont

Продолжить выполнение

Dbstep

Выполнить команду отладки

Dbquit

Завершить отладку

dbstack

Список точек останова

Полный список команд отладки с перечислением вариантов обращения можно посмотреть в системе справки (help debug), документации MATLAB или книгах.

2.3.2 Редактор medit и отладка

Редактор-отладчик medit обеспечивает удобную среду для подготовки и отладки m - файлов в MATLAB. Файл редактора medit.exe находится в директории \bin и может быть вызван из командного окна MATLAB (пункты New и Open меню Filе, запуск команды edit) или запущен как обычная программа. Редактор-отладчик предоставляет доступ к текстам и данным, в нем можно редактировать m-файлы, вызывать для просмотра и изменения матричные переменные, организовывать отладку программ и функций.

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

Если редактор medit вызван из командного окна, то в процессе вычислений редактирование становится невозможным. Чтобы в среде Windows подготавливать код (файлы сценариев и функций) параллельно вычислениям, можно запустить редактор medit автономно от MATLAB, но в этом случае просмотр данных будет невозможен.

Рассмотрим отладку с использованием средств редактора-отладчика. Назначения пунктов меню Debug приведены в таблице 2.5.

Таблица 2.5

Пункт меню

Описание

Set/Clear Breakpoint F12

Расставить/убрать точку останова

Clear All Breakpoints

Убрать все точки останова

Step In F11

Построчное исполнение с заходом в вызываемые функции

Single Step F10

Построчное исполнение

Continue

Выполнение до следующей точки останова

Quit Debugging

Завершить отладку

Для отладки m-функции вызовем из командного окна редактор medit и считаем нужный файл. Чтобы указать точку останова в тексте функции, установим курсор на нужной строке и выполним пункт Set/Clear Breakpoint или щелкнем по отвечающему этому пункту значку. После расстановки точек останова запустим отлаживаемый файл. Пакет MATLAB выполнит все команды до первой точки и сделает паузу. Ниже можно просмотреть значения переменных. Пунткты указатели из меню откладки Debug (Таблица 2.6).

Таблица 2.6

Stop If Error

Остановка при ошибке

Stop if Warning

Остановка при предупреждающем сообщении

Stop if NaN or Inf

Остановка при появлении нечисловой или бесконечной переменной

2.4 Разработка mex-файлов

Для ускорения вычислений в MATLAB можно использовать mex-файлы - написанные на С или Фортране и откомпилированные процедуры. Тексты на языке MATLAB (файлы с расширением.m) машинно-независимы, а подготовленные для одной платформы mex-файлы (Matlab EXternal) должны быть откомпилированы заново при переходе к другой среде. Для каждой из платформ подготовленные mex-файлы имеют свое расширение, например: dll для Windows, mexlx для Linux, mexsol для Solaris, mexalp для Alpha.

Вызываются mex-файлы как обычные m-файлы, причем если интерпретатору встретилось некоторое имя функции, то вначале ищется mex-файл с этим именем в каталогах, определенных списком MATLAB search path, и только при его отсутствии начинается поиск т-файла.

Программирование mех-файлов заключается в написании процедур на С или Фортране и подготовке переходного блока для получения данных из среды MATLAB и возвращения результата. MATLAB оперирует с массивами, поэтому все переменные - скаляры, векторы, матрицы, строки, массивы ячеек, структуры и объекты - реализованы в виде массивов. В программе на С массив MATLAB должен быть объявлен типом mxArray, в нем будут содержаться размерности, сами данные, сведения об их типе (вещественные или комплексные), индексы ненулевых элементов для разреженных (sparse) матриц, число полей и их имена для структуры и объекта. Заметим, что из m-файла при помощи имеющегося в MATLAB компилятора lсс можно приготовить текст на языке С.

При подготовке mех-файлов следует определить используемый компилятор, для чего надо выполнить команду

» mех - setup

Если на машине установлено несколько компиляторов, то MATLAB предложит выбрать, какой из них будет использоваться далее для компиляции. Например, если на машине установлен только компилятор Borland C/C++, то будет предложен следующий выбор:

Select a compiler:

[1] Borland C/C++ version 5.02 in C:\BC5

[2] Lcc С version 2.4 in C:\MATLABR12\sys\lcc

[0] None

Compiler:

Здесь lcc - собственный компилятор MATLAB. Для компиляции текстов на Фортране также следует определить соответствующий компилятор.

В комплекте поставки MATLAB имеются примеры оформления mех-файлов. Так, в подкаталоге \extern\examples\mex находятся файлы на С (yprime.c) и Фортране (yprimef.f, yprimefg.f). Чтобы запустить компиляцию примера на С, надо перейти в подкаталог с примером и вызвать команду mех. Например, чтобы откомпилировать функцию yprime.с, необходимо выполнить следующие команды:

cd([matlabroot «\extern\examples\mex»]) mех yprime.c

Взаимодействие интерпретатора с mex-файлом осуществляется следующим образом. Пусть func - m-функция, которая должна быть реализована в виде mех-файла. Обращение [C.D] - func (A, B) указывает MATLAB, что параметры А, В являются входными, а параметры С, D - выходными. Заголовок принимающей функции на языке С должен иметь имя mexFunction и оформляться следующим образом:

#include <math.h> void mexFunction (

int nlhs. mxArray *plhs[].

int nrhs. const mxArray *prhs[])

Переменные pihs и prhs есть векторы, содержащие указатели на выходные и входные параметры. Чтобы воспринять входные данные, следует обратиться к функции mxGet и использовать указатели prhs[0], prhs[l] и т.д. В случае скалярной переменной можно работать непосредственно с ее значением, получить которое позволяет функция mxGetScalаг. Для оформления возвращаемых параметров нужно использовать функцию mxCreate.

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

При выполнении mex-задания используются параметры, перечисленные в файле параметров mexopts, например mexopts.bat для Windows. Параметры можно также указывать в командной строке.

Из mех-функций можно обращаться и к другим командам MATLAB; для этого имеется специальная функция mехСаll MATLAB с пятью параметрами. Первые четыре обеспечивают интерфейс и аналогичны параметрам функции mexFunction, а пятый содержит имя вызываемой команды.

В среде Windows скомпилированный машинный код mex-файла находится в файле динамической библиотеки (Dynamic Link Library) с расширением.dll. Для отладки mex-функций можно использовать среду системы, в которой компилируется функция, например Developer Studio для Visual C++ Microsoft. Параметры команды mех (Таблица 2.7).

Таблица 2.7

Параметр

Назначение

Компиляция без редактирования связей

-h

Справка по команде тех

-g

Включение отладочных символов в тех-фунццию

-I PATH

Указание пути (PATH) для компилятора

Оптимизация mех-функции

-output NAME

Указание имени (NAME) создаваемой тех-функции

-v

Печать установок компилятора и редактора связей

Более подробно программирование и отладка mex-функций описаны в фирменном руководстве Application Program Interface Guide.

Заключение

В курсовой работе рассмотрена среда MATLAB, детально изучены основные команды и операционная программа в среде MATLAB. Изученные и использованные при написании u-файлов, команды ввода, команды вывода, команды LOAD и SAVE, команды для работы с файлами. Рассмотрены основные принципы объектно-ориентированного программирования в среде MATLAB, изучены основные возможности отладки в среде MATLAB. Среда MATLAB представляет собой очень удобную математическую среду, позволяющую работать с матричными файлами. В MATLAB несложно запрограммировать различные процедуры, обратные матрицы и построенные графики, сложные функции.

Список источников

1. Говорухин В. Компьютер в математическом исследовании. Учебный курс / В. Говорухин, В. Цибулин. - Спб.: Питер, 2001. - 624 с.

2. Дьяконов, В.П. Matlab 6. Учебный курс / В.П. Дьяконов. - СПб.: Питер, 2001. - 592 с.

3. Гультяев, А. Визуальное моделирование в среде Matlab: учебный курс / А. Гультяев. - СПб.: Питер, 2000. - 432 с.

4. Потемкин, В.Г. Matlab 5 для студентов / В.Г. Потемкин. - М.: Диалог-МИФИ, 1998. - 287 с.

5. Мартынов, Н.Н. Matlab 5.x. Вычисления, визуализация, программирование / Мартынов Н.Н., Иванов А.П. - М: Кудиц-образ, 2000. - 336 с.

6. Мартынов, Н.Н. Matlab 7. Элементарное введение / Мартынов Н.Н. - М: Кудиц-образ, 2005. - 416 с.

Размещено на Allbest.ru


Подобные документы

  • Язык и среда Matlab. Управляемая графика. Библиотека математических функций. Программный интерфейс. Использование операторов при составлении выражений. Работа в командной строке. Команды save, load и clear. Рабочий каталог. Сохранение рабочей сессии.

    презентация [413,6 K], добавлен 14.11.2013

  • Особенности работы в режиме командной строки в системе Matlab. Переменные и присваивание им значений. Комплексные числа и вычисления в системе Matlab. Вычисления с использованием функции sqrt. Неправильное использование функций с комплексными аргументами.

    дипломная работа [1,9 M], добавлен 30.07.2015

  • Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность Matlab. Графический способ решения уравнений.

    реферат [46,3 K], добавлен 05.01.2010

  • Общие сведения о языке программирования Matlab. Функции работы с векторами и матрицами. Операторы условных переходов. Построение двумерных графиков. Построение гистограммы изображения. Функции его преобразования и зашумления, метрики определения качества.

    лабораторная работа [853,5 K], добавлен 25.10.2015

  • Общая характеристика и свойства системы Matlab - пакета прикладных программ для решения задач технических вычислений. Разработка математической модели в данной среде, программирование функций для задающего воздействия. Проектирование GUI-интерфейса.

    курсовая работа [1023,2 K], добавлен 23.05.2013

  • Модель релейной системы регулирования и идентификации структуры отдельного характерного элемента ЭКС зубца Р в системе MatLab. Анализ линейных звеньев с применением Control System Toolbox и Simulink. Методы построения переходных и частотных характеристик.

    дипломная работа [1,1 M], добавлен 28.01.2015

  • Программный комплекс MATLAB как мощное средство для высокоточного цифрового моделирования системы автоматического управления. Основные особенности построения временных характеристик с помощью пакета Control System и моделирования в системе Simulink.

    контрольная работа [2,3 M], добавлен 14.11.2012

  • Использование программного обеспечения MatLab для выполнения математических расчетов в области линейной алгебры, теории информации и обработки сигналов, автоматического и автоматизированного управления. Возможности стандартного интерфейса программы.

    курсовая работа [178,7 K], добавлен 08.08.2011

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Исследование линейных динамических моделей в программном пакете Matlab и ознакомление с временными и частотными характеристиками систем автоматического управления. Поиск полюса и нуля передаточной функции с использованием команд pole, zero в Matlab.

    лабораторная работа [53,1 K], добавлен 11.03.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.