Передача переменных Matlab в C - PullRequest
4 голосов
/ 16 января 2012

У меня очень большая структура данных в некотором коде Matlab в виде ячеек массивов.Мы хотим разработать код C для работы с этими данными, но мне нужен какой-то способ сохранить переменную Matlab (которую мы генерируем в Matlab) и открыть ее в программе на C / C ++.Какой самый простой способ соединить две программы, чтобы я мог передавать данные?

Ответы [ 3 ]

1 голос
/ 17 января 2012

Если вы время от времени перемещаете данные из MATLAB в C, проще всего было бы записать их в двоичный файл, а затем прочитать из файла в C. Это, конечно, оставляет код C полностью независимым от MATLAB.

Это не должно быть настолько запутанным, если ваша структура данных представляет собой просто массив ячеек из регулярных массивов, например,

a{1} = zeros(1,5);
a{2} = zeros(1,4);

Вы можете просто написать заголовок для каждой ячейки, а затемданные в файл.В приведенном выше случае это будет:

[length{1} data{1} length{2} data{2}]

В указанном выше случае:

5 0 0 0 0 0 4 0 0 0 0

Если массивы двумерные, вы можете расширить это, написав: row, column, затемданные в основном порядке строк для каждой ячейки.

Это может быть не совсем удобно, но должно быть достаточно простым.Вы также можете сохранить его как файл .mat и прочитать его, но я бы не рекомендовал бы это.Гораздо проще поместить его в двоичный формат в MATLAB.

Если вам нужно перемещать данные чаще, чем это удобно для файла, есть другие варианты, но все, что я могу придумать, связано сMATLAB в некотором роде.

0 голосов
/ 16 января 2012

Если двум процессам необходимо соединиться в течение их жизненного цикла, у вас есть много вариантов:

  • Компилировать Matlab DLL.
  • Использовать Matlab Engine.
  • Скомпилировать MEX-файл (как упоминалось ранее @Oli)

Если связь отключена (после закрытия Matlab C ++ начинает читать), вам следует использовать файловую систему. Попробуйте отформатировать его в XML, это общепризнанный стандарт.

0 голосов
/ 16 января 2012

Вы должны использовать mex файлы:

http://www.mathworks.fr/support/tech-notes/1600/1605.html

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