Kot_Begemot
Kot_Begemot личный блог
07 апреля 2020, 09:38

Open Source : Lua - MatLab Connector (3)



Краткое описание :

Библиотека Matlab2Lua  позволяет интегрировать Lua скрипты и Маtrix Laboratory Engine.


Полное описание :

Библиотека позволяет Lua и Матлаб обмениваться данными при помощи функций :

lua variable = Get( string Matlab varname );  — получение переменной из среды матлаб по имени, поддерживаются Double Array, Cell Array of Strings, Double Value, Integer Value, String Value. Возвращает -1 в случае неудачи.

int Eval ( string MatlabСommand ) — передает команду в MatLab Command Line, в качестве переменной типа string; возвращает -1 в случае неудачи, и 1 в случае успеха.

int PutVal( string Name, string/number Value) — передает в Матлаб значение Value типа string или number под именем Name. 1- успех, -1 — неудача.

int PutDouble( string Name, table T) — передает в Матлаб под именем Name таблицу Луа, заполненную численными значениями. Ответ — аналогичный.

int PutCell( string Name, table T)  — передает в Матлаб под именем Name таблицу Луа, заполненную строковыми или численными значениями, подлежащими преобразованию в строки. Ответ — аналогичный.


Требует запущенного Matlab Engine в качестве Automation Server (MatLab-side) :

server=actxserver('matlab.application.single'); server.Execute(' enableservice (''AutomationServer'', true)');

Файлы :

1. Скомпилированная под win64 библиотека Matlab2Lua.dll с «встроенной» (статической) линковкой. (MinGW64, CodeBlocks)
2. Тестовый скрипт Lua Test.Lua, демонстрирующий работу библиотеки
3. Открытый код Cpp main.cpp (без проекта). 



Лицензия :

Автор: Кот-Бегемот
Благодарности: 3Qu
Лицензия: All what you want


Ссылки проекта :


1. Cpp DLL для Lua
2. Cpp и Matlab Engine
3. Lua API и Сpp 


Используемые модули и библиотеки (для сборки проекта):

Поставка Матлаб:

1. Библиотека libeng.lib, отвечающая за управление интерфейсом Matlab   (matlabroot)/extern/lib/win64/microsoft  
2. Библиотека libmx.lib, отвечающая за конвертацию данных Matlab — Cpp   (matlabroot)/extern/lib/win64/microsoft
3. Файл заголовок engine.h, описывающий доступные пользователю функции.  (matlabroot)/extern/include/win64/microsoft
4. Библиотека libeng.dll, отвечающая за управление интерфейсом Matlab
.  (matlabroot)/bin/win64

* директории указаны соответственно 64-битной win OS

Поставка Lua :

1. lua5.1.dll или аналог
2. luaxlib.h
3. lua.h

* Находятся в открытом доступе, например : http://luabinaries.sourceforge.net/download.html
6 Комментариев
  • Митин Артём
    07 апреля 2020, 11:01
    Обозначьте мотивацию для чего используется библиотека, какие цели у всего проекта
  • Mrak
    07 апреля 2020, 14:05
    Это круто! Ни разу не видел торгового робота на Матлабе
  • bosov
    17 октября 2020, 18:32
    Много лет у меня робот на Матлабе. Из Квика по ДДЕ, обратно через текстовый файл в Купайл. Не очень красиво, но вполне надёжно. Когда появился Луа сам пробовал через СОМ сделать. Но не программист.
    Ваш коннектор интересно, хотел попробовать. Но не понял, что в какие папки сохранять. С путями к либе выдаёт ошибки. И когда и откуда запускать actxserver?
    Подскажите, если не трудно.
  • Николай
    10 июня 2021, 15:00

    Приветствую

    Проект не запускается.

    Ошибка в Quik

    error loading module 'Matlab2Lua53' from file 'D:\bns\Documents\QUIK_DEMO\Matlab2Lua53.dll':
    Не найден указанный модуль.

    Моя версия Quik 8.12 & Lua 5.3.5 (под Win10)

    В чем может быть причина?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн