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

Я совершенно новичок в MATLAB и хочу знать, какие у меня есть варианты для потоковой передачи данных из файла C++.

Я слышал об использовании для этой цели «движка» MATLAB и некоторых методов, таких как engPutVariable и т. д., но может ли кто-нибудь дать мне подробный пример того, как это сделать? Я пытаюсь реализовать потоковую передачу синусоидальной волны, но достаточно простого примера отправки образца набора данных.


person Suvesh Pratapa    schedule 01.07.2009    source источник


Ответы (1)


У вас есть два варианта: движок Matlab и функции mex. Очень важно отметить, что API Matlab является однопоточным. Совершенно невозможно иметь видимые пользователю фоновые потоки. В лучшем случае есть прерывания для событий пользовательского интерфейса.

С движком Matlab ваше приложение представляет собой приложение C++, использующее Matlab в качестве библиотеки надстроек. Вы можете вызывать функции Matlab из C++, но вы должны убедиться, что только один поток обращается к Matlab в любой момент времени. Таким образом, у вас может быть поток, который передает данные в Matlab из очереди входных данных, поступающих от остальной части вашего приложения. C++ может иметь сколько угодно потоков, но только один из них может взаимодействовать с Matlab.

Другой подход заключается в том, чтобы Matlab управлял основным приложением и вызывал код C++ всякий раз, когда ему нужны дополнительные данные. Код C++ действует как плагин для Matlab. Код C++ может иметь столько потоков, сколько захочет, но Matlab опрашивает C++, когда ваш m-файл вызывает его. Посмотрите документацию по функциям MEX.

person Mr Fooz    schedule 02.07.2009
comment
Спасибо! Это проясняет ситуацию, по крайней мере, немного, так что я могу начать. - person Suvesh Pratapa; 02.07.2009