взлом

Открытая медицинская библиотека

Статьи и лекции по медицине ✚ Библиотека студента-медика ✚ Болезни и способы их лечения.

Хирургия Void mexFunction(
просмотров - 203

int nlhs, /* количество выходных параметров */

mxArray *plhs[],/*массив указателœей на вых.параметры*/

int nrhs, /* количество входных параметров */

/**/

const mxArray *prhs[]/*массив указ-ей на вход.пар-ры */

);

Отметим, что в английской компьютерной литературе входные и выходные параметры называются "left hand side parameters" (параметры слева от знака присваивания) и "right hand side parameters" (параметры справа от знака присваивания). Сокращения этих названий вошли в имена параметров интерфейсной функции.

Рассмотрим структуру mxArray. Помимо прочих, она содержит следующие поля:

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

Матрицы (двумерные массивы) являются подмножеством mxArray, для чего в этой структуре предусмотрены поля pr (вещественная часть) и pi (мнимая часть). Каждое из этих полей представляет собой одномерный массив, содержащий элементы матриц (double-числа) поколоночно - сначала всœе элементы первого столбца матрицы, затем - второго и т.д.

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

Другой набор функций в этой же библиотеке имеет префикс mex (напр. mexPrintf()). В отличие от предыдущих, они осуществляют ту или иную операцию в самой среде MATLAB, к примеру - печатают строку текста. Никакая из этих функций не осуществляет прямого доступа к полям mxArray.

Оба указанных набора функций содержатся в динамических библиотеках, находящихся в каталоге \matlab\bin. Эти библиотеки следует подключить к проекту. Не забывайте также включать заголовочный файл mex.h во всœе исходные файлы вашей программы, в которых используются вызовы функций библиотеки MATLAB или ее типы данных.

В заключение, еще раз подчеркнем, что mxArray в состоянии описать любую переменную MATLAB, что и дает возможность написать расширение, работающее с любым типом данных.

Настройка среды для сборки проекта

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