Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nikeo от Декабрь 07, 2012, 12:23



Название: Запуск matlab-файла(.m)
Отправлено: nikeo от Декабрь 07, 2012, 12:23
Всем доброго времени суток!
Есть необходимость подключить к проекту матлаб файл,выполнить определенные действия и получить результат.
Если кто сталкивался с такой задачей,то поделитесь пожалуйста)
Matlab Engine не подходит,так как там большое количество .m файлов.

Сама программа достаточно не удобная:
1.через QWebView загружаются google maps,через которые получаем долготу и широту.
2.Все эти данные,должны отправляться в матлаб модуль,для расчета геометрического потенциала за определенный промежуток времени,и,соответственно,возвращать числовой результат обратно.
3. В зависимости от результата,ставится маркер определенного цвета.

Вообщем то выполнено все,кроме модуля матлаба.


Название: Re: Запуск matlab-файла(.m)
Отправлено: Nagdiel от Декабрь 07, 2012, 20:09
Попробуй использовать Matlab COM-server
http://www.mathworks.com/help/matlab/call-matlab-com-automation-server.html (http://www.mathworks.com/help/matlab/call-matlab-com-automation-server.html)


Название: Re: Запуск matlab-файла(.m)
Отправлено: nikeo от Декабрь 08, 2012, 16:09
Попробуй использовать Matlab COM-server
http://www.mathworks.com/help/matlab/call-matlab-com-automation-server.html (http://www.mathworks.com/help/matlab/call-matlab-com-automation-server.html)
а если,допустим,использовать Engine,но сам файл будет ссылаться на еще кучу файлов,такое прокатит?)


Название: Re: Запуск matlab-файла(.m)
Отправлено: Nagdiel от Декабрь 08, 2012, 19:06
По идее не должно быть проблем с вызовом вложенных m-функций. Главное, чтобы Matlab знал путь к ним. По сути, работая с Matlab через COM интерфейс, имеем все то же самое, что и при непосредственной работе. Разница лишь в том, что данные передаются из внешнего приложения, оно же и вызывает нужные m-функции и скрипты через метод Execute(...).


Название: Re: Запуск matlab-файла(.m)
Отправлено: nikeo от Декабрь 08, 2012, 19:15
По идее не должно быть проблем с вызовом вложенных m-функций. Главное, чтобы Matlab знал путь к ним. По сути, работая с Matlab через COM интерфейс, имеем все то же самое, что и при непосредственной работе. Разница лишь в том, что данные передаются из внешнего приложения, оно же и вызывает нужные m-функции и скрипты через метод Execute(...).

А если,допустим,собрать дллки?можно ли собрать одну дллку с проекта?


Название: Re: Запуск matlab-файла(.m)
Отправлено: Nagdiel от Декабрь 08, 2012, 19:56
Если речь о Matlab-compiler, то ничего определенного сказать не могу в виду того, что не пробовал его использовать.

Здесь http://habrahabr.ru/post/146568/ (http://habrahabr.ru/post/146568/), например, написано:

[...] для компиляции этой функции в динамическую библиотеку:
- Пишем в консоли MatLab: deploytool.
- В открывшемся окне пишем имя проекта, его расположение а из выпадающего списка выбираем C Shared library и нажимаем OK. Учтите, что в Linux названия библиотек начинается со слова lib, поэтому и проект стоит называть libsum.prj
- В окне Exported Functions нажимаем на Add files и добавляем только что созданную функцию.
- Нажимаем на кнопку Build и дожидаемся окончания компиляции.

Судя по п.3 можно добавлять несколько разных функций, по крайней мере тех, что используют стандартный Runtime. А вот насчет того, чтобы создать библиотеку из кросс-зависимых функций, тут я не представляю, как поведет себя компилятор.