Блог им. Kot_Begemot

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
  • обсудить на форуме:
  • Quik Lua
★11
6 комментариев
ЗакрепитьКомментарий закреплен пользователем Kot_Begemot

Полное дерево ссылок
 ,  доступ к хранилищу


Изменения от 20.04.2020 :


Библиотека протестирована в рабочем режиме на Quick 8.4.1.6.

Добавлена возможность передачи одномерных Lua таблиц как вектор-столбцов.


Изменения от 01.09.2020 :

Добавлена версия под Lua 5.3 

MatLab2Lua53.dll
Файлы проекта
avatar
Обозначьте мотивацию для чего используется библиотека, какие цели у всего проекта
avatar
Митин Артём, для использования торговых роботов, написанных на Матлаб 
avatar
Это круто! Ни разу не видел торгового робота на Матлабе
avatar
Много лет у меня робот на Матлабе. Из Квика по ДДЕ, обратно через текстовый файл в Купайл. Не очень красиво, но вполне надёжно. Когда появился Луа сам пробовал через СОМ сделать. Но не программист.
Ваш коннектор интересно, хотел попробовать. Но не понял, что в какие папки сохранять. С путями к либе выдаёт ошибки. И когда и откуда запускать actxserver?
Подскажите, если не трудно.
avatar

Приветствую

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

Ошибка в Quik

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

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

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

avatar

теги блога Kot_Begemot

....все тэги



UPDONW
Новый дизайн