Как правило, очень легко вызывать mex
файлы (написанные в c/С++) в Matlab для ускорения определенных вычислений. Однако, по моему опыту, истинным узким местом в Matlab является построение данных. Создание дескрипторов чрезвычайно дорого и даже если вы только обновляете данные дескриптора (например, XData, YData, ZData), это может занять много времени. Хуже того, поскольку Matlab - это однопоточная программа, невозможно одновременно обновлять несколько графиков.
Поэтому мой вопрос: Возможно ли написать графический интерфейс Matlab и вызвать С++ (или какой-нибудь другой параллелизуемый код), который позаботится о построении/визуализации? Я ищу кросс-платформенное решение, которое будет работать на Windows, Mac и Linux, но любое решение, которое запускает меня на обеих ОС, очень ценится!
Я нашел библиотеку С++, которая, похоже, использует синтаксис Matlab plot()
, но я не уверен, ускорит ли это процесс, так как я боюсь, что если я заработаю в окне Matlab figure()
, все может замедлиться.
Буду признателен за любые комментарии и отзывы от людей, которые раньше занимались подобной ситуацией!
EDIT:, очевидно, что я уже профилировал свой код, а узким местом является построение графика (дюжина панелей с большим количеством данных).
EDIT2:, чтобы получить награду, мне нужна реальная жизнь, минимальный рабочий пример о том, как это сделать - наводящие на меня ответы не помогут.
EDIT3: относительно данных для построения: в наиболее упрощенном случае подумайте о 20 строках, которые нужно обновлять каждую секунду примерно с 1000000 точками данных.
EDIT4: Я знаю, что это огромное количество очков, но я никогда не говорил, что проблема была простой. Я не могу просто оставить определенные точки данных, потому что нет способа оценить, какие точки важны, прежде чем на самом деле их замышлять (данные дискретизируются временным разрешением sub-ms). На самом деле мои данные получены с использованием коммерческой системы сбора данных, которая поставляется с программой просмотра данных (написанной на С++). У этой программы нет проблем с визуализацией до 60 линий с еще более чем 1000000 точками данных.
EDIT5: Мне не нравится, где идет текущее обсуждение. Я знаю, что суб-выборка моих данных может ускорить работу, но это не вопрос. Вопрос здесь в том, как получить интерфейс c/С++/python/java для работы с Matlab, чтобы, надеюсь, ускорить построение графика, разговаривая напрямую с аппаратным обеспечением (или используя любой другой трюк/способ)