Передающие структуры и массивы ячеек в файлы MEX похожи на передачу любого другого типа данных, кроме данных самого в Матричном API C имеет тип mxArray
. На практике mxGetField
(для структур) и mxGetCell
(для массивов ячеек) возвращает указатели типа mxArray
. Вы обрабатываете указатели как любые другие указатели типа mxArray
. Чтобы передать данные, содержавшиеся в mxArray
к стандартной программе C, используйте API-функцию, такую как mxGetData
, чтобы получить доступ к нему.
Этот пример файла MEX использует Матричный API C. Для примера файла MEX C++ с помощью MATLAB Data API смотрите phonebook.cpp
. Для получения информации о создании файлов MEX с этим API смотрите MEX-функции C++.
Этот пример берет m
-by-n
матрица структуры, как введено и возвращает новый 1
-by-1
структура, которая содержит эти поля:
Ввод текста генерирует m
-by-n
массив ячеек
Числовой входной параметр (некомплекс, скалярные значения) генерирует m
-by-n
вектор чисел с тем же ID класса как входной параметр, например 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]