Передача структур и Массивы ячеек в Файлах MEX на C

Передающие структуры и массивы ячеек в файлы 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]

Похожие темы