Использовать массив ячеек Matlab в программе на C / C ++ - PullRequest
3 голосов
/ 27 января 2010

Как мне прочитать массив ячеек Matlab , сохраненный в виде файла .mat и содержащий 3 * 3 * 2 многомерных двойных данных в массив c / c ++?

Ответы [ 3 ]

1 голос
/ 27 января 2010

Формат файла MATLAB задокументирован здесь . Не выглядит слишком волосатым.

Редактировать: Извините, ссылка была повреждена.

1 голос
/ 09 июня 2011

Ссылка на libmx.lib, libmat.lib, libeng.lib и включает заголовки mat.h и engine.h.Я игнорирую мнимый компонент данных и предполагаю, что вы знаете, как использовать C ++ STL.Приведенный ниже код адекватен, но здесь доступен более простой интерфейс mxWrapper: http://www.mathworks.com/matlabcentral/fileexchange/28331-replacement-for-mwarray-using-matlab-engine

vector<double> readSomeNumbers() {</p> <pre><code> vector<double> data; mxArray *pMx=load("c:\\someFile.mat", "foobar"); if (!pMx) return data; ASSERT(mxGetClassID(pMx) == mxDOUBLE_CLASS); data.assign(mxGetPr(pMx), mxGetPr(pMx)+mxGetNumberOfElements(pMx)); mxDestroyArray(pMx); return data; } mxArray *load(const string& fileName, const string& variableName) { MATFile *pmatFile = matOpen(fileName.c_str(), "r"); if(pmatFile == NULL) return NULL; mxArray* pMx = matGetVariable(pmatFile, variableName.c_str()); if(pMx == NULL) { matClose(pmatFile); return NULL; } matClose(pmatFile); return pMx; }

0 голосов
/ 27 января 2010

Этот документ описывает интерфейс для чтения и записи файлов MAT в C / C ++:

http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f39876.html#f13830

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...