русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-09; просмотров: 2194; Нарушение авторских прав


 

Для ускорения вычислений в 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.

 

 


 

 



<== предыдущая лекция | следующая лекция ==>
Редактор medit и отладка | Общая характеристика системы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.185 сек.