Передача структур и массивов ячеек в MEX-файлы подобна передаче любого другого типа данных, за исключением того, что сами данные в C Matrix API имеют тип mxArray. На практике, mxGetField (для конструкций) и mxGetCell (для массивов ячеек) возвращаемые указатели типа mxArray. Указатели обрабатываются как любые другие указатели типа mxArray. Передача данных, содержащихся в mxArray для подпрограммы C используйте функцию API, такую как mxGetData для доступа к нему.
В этом примере MEX-файла используется C Matrix API. Пример файла C++ MEX с использованием API данных MATLAB см. в разделе phonebook.cpp. Сведения о создании файлов MEX с помощью этого API см. в разделе Функции C++ MEX.
В этом примере используется mоколо-n структурная матрица в качестве входных данных и возвращает новую 1около-1 структура, содержащая следующие поля:
Ввод текста создает mоколо-n массив ячеек
Числовой ввод (некомплекс, скалярные значения) генерирует mоколо-n вектор чисел с тем же идентификатором класса, что и вход, например int, doubleи так далее.
Для построения этого примера в командной строке введите:
mex phonebook.cЧтобы увидеть, как работает эта программа, создайте следующую структуру:
friends(1).name = 'Jordan Robert'; friends(1).phone = 3386; friends(2).name = 'Mary Smith'; friends(2).phone = 3912; friends(3).name = 'Stacy Flora'; friends(3).phone = 3238; friends(4).name = 'Harry Alpert'; friends(4).phone = 3077;
Вызовите файл MEX:
phonebook(friends)
ans =
name: {1x4 cell }
phone: [3386 3912 3238 3077]