Работа с mxArrays

Библиотека Интерфейса MAT-файла позволяет вам доступ массивы MATLAB® (введите mxArray) в MAT-файле. Чтобы работать непосредственно с mxArray в приложении C/C++, используйте функции в Матричной Библиотеке.

Можно найти примеры для работы с типом mxArray в папках matlabroot /extern/examples/mex и matlabroot /extern/examples/mx. Следующие темы показывают примеры кода С, на основе этих примеров MEX, для работы с ячейками и структурами. Примеры показывают, как считать ячейку и массивы структур и информацию об отображении на основе типа mxArray в каждом элементе массива.

Если вы создаете приложение от одного из примеров MEX, вот некоторые советы для адаптации кода к автономному приложению.

  • Пример MAT-файла, matdgns.c, показывает, как открыть и считать MAT-файл. Для получения дополнительной информации о примере, смотрите MAT-файл Чтения на C/C++.

  • Пример MEX, explore.c, имеет функции, чтобы считать любой тип MATLAB с помощью функции mxClassID. Для получения дополнительной информации о примере, смотрите Используя Типы данных.

  • Некоторые примеры MEX используют функции, такие как mexPrintf, от API MEX C libmex. Вы не должны использовать эти функции, чтобы работать с mxArray, но если ваша программа вызывает какого-либо из них, необходимо соединиться с Библиотекой MEX. Для этого добавьте libmex.lib в оператор ссылки.

Чтение структур из MAT-файла

Пример matreadstructarray.c основан на функции analyze_structure в explore.c. Для простоты, этот пример только процессы действительные элементы типа double; обратитесь к примеру explore.c для проверки ошибок и обработки других типов.

Чтобы видеть код, откройте файл в редакторе MATLAB.

После создания программы, запущенной приложение на MAT-файле, testpatient.mat.

Во-первых, создайте структуру patient и сохраните его.

patient(1).name = 'John Doe';
patient(1).billing = 127.00;
patient(1).test = [79 75 73; 180 178 177.5; 172 170 169];
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];

save testpatient.mat

Вычислите общее количество поля billing.

!matreadstruct testpatient.mat patient billing
Total for billing: 155.50 

Чтение Массивов ячеек из MAT-файла

Пример matreadcellarray.c основан на функции analyze_cell в explore.c.

Чтобы видеть код, откройте файл в редакторе MATLAB.

После создания программы, запущенной приложение на MAT-файле, testcells.mat.

Во-первых, создайте три переменные ячейки и сохраните.

cellvar = {'hello'; [2 3 4 6 8 9]; [2; 4; 5]};
structvar = {'cell with a structure'; patient; [2; 4; 5]};
multicellvar = {'cell with a cell'; cellvar; patient};

save testcells.mat cellvar structvar multicellvar

Отобразите тип mxArray для содержимого ячейки cellvar.

!matreadcell testcells.mat cellvar
0: string 
1: numeric class 
2: numeric class

Похожие темы