В предыдущей статье мной были рассмотрены возможности среды GUIDE входящей в MATLAB, ее инструментарий сильно устарел как по функциональности так и по дизайну. Такого инструментария недостаточно для реализации более-менее крупных проектов, которые подразумевают большое количество строк кода и создание исполняемого файла. Под такие требования полностью подпадает инструментарий MLAPP. Такого приложения нет в старых версиях MATLAB, в рамках данной статьи работа будет вестись в MATLAB 2019а. Для среды MLAPP достаточно выполнить в командной строке матлаба следующую команду:

Запуск инструмента по созданию приложений
Запуск инструмента по созданию приложений

Далее открывается окно в котором можно выбрать один из возможных шаблонов, либо пустое окно для создания приложения:

Варианты шаблонов для создания приложения
Варианты шаблонов для создания приложения

В качестве примера приложение будет создаваться без использования шаблонов:

Выбор одного из шаблонов
Выбор одного из шаблонов

В инструментарий mlapp входит большое число элементов управления для организации интерфейса программы:

Элементы интерфейса программы
Элементы интерфейса программы

Добавляя элементы управления, формируем облик приложения:

Формирование облика приложения
Формирование облика приложения

Для создания реакции на нажатие кнопок необходимо открыть контекстное меню:

Настройка логики работы элементов интерфейса
Настройка логики работы элементов интерфейса

У mlapp существует особенность, которая сильно отличает написание кода в нем от других IDE, mlapp не позволяет редактировать тот код, который отвечает за структуру самого приложения (настройки интерфейса, параметры элементов управления), то что нельзя редактировать выделяется в редакторе серой заливкой. Область, в которой приложение позволяет писать код, показано белой заливкой.

Фрагмент кода программы
Фрагмент кода программы

И редактировать и создавать можно только тот код который отвечает за логику работы приложения:

Фрагмент кода программы
Фрагмент кода программы

Язык написания кода – это MATLAB, а файлы формата mlapp представляют собой *.zip архивы которых содержат код приложения и файл графического интерфейса.

Когда приложение готово, его необходимо подготовить к распространению, для этого в mlapp существует следующий инструмент:

Выбор типа распространяемого приложения
Выбор типа распространяемого приложения
Описание версии приложения
Описание версии приложения

Для работы таких скомпилированных приложений необходимо, чтобы на компьютере было установлено ядро Matlab (matlab_runtime). Ядро матлаба можно либо скачать непосредственно с официального сайта и установить, либо встроить в распространяемое приложение:

Включение ядра Mатлаб в распространяемое приложение
Включение ядра Mатлаб в распространяемое приложение
Компиляция приложения
Компиляция приложения
Исполняемый файл приложения
Исполняемый файл приложения
Запущенное приложение
Запущенное приложение
Валерий Гольцев

Автор: https://vk.com/elteh_helper

Комментарии (8)


  1. Arastas
    08.12.2022 16:10

    В смысле, скачать 5Mb или встроить в инсталятор 754Mb?


  1. Arastas
    08.12.2022 16:12
    +1

    Файлы mlapp не версионируются нормально сторонними средствами, вроде git. И это проблема.


    1. n_kapyrin
      09.12.2022 13:40
      +1

      Всё хочу попробовать настроить diff через zip, как сказано тут, но опыта мало.

      Похоже, что нужно в ~/.gitconfig написать

      [diff "zip"]
      textconv = unzip -c -a

      а в REPOSITORY/.gitattributes написать

      *.mlapp diff=zip


  1. timofeevka
    10.12.2022 10:19
    -1

    А как у вас с лицензиями то? Или пиратку узаконили официально?

    По GUI : в SimInTech графическая оболочка совмещает в себе сразу функции scada и рисования гуя. Собственно используя только саму оболочку без плагинов делали видеокадры для тренажеров АЭС успешно. Инструкция есть в справке по программе.

    Собственно что вы пишете то до сих пор про матлаб? Пора писать о том на что и как его заменять на предприятиях и учебных заведениях.


  1. timofeevka
    10.12.2022 10:22

    А да: уберите тег "инженерные системы", обычно под этим имеют в виду водопровод , канализацию и электрические сети.


  1. beeptec
    10.12.2022 13:06

    Выглядит довольно недоношенным дитём, по сравнению с GUI LabVIEW, в который разработчик может встроить код MatLab и не париться со всеми этими "недо новшествами".


    1. Arastas
      10.12.2022 13:48

      Ну я видел несколько лет назад примеры gui labview. Либо они за эти несколько лет сильно изменились, либо я не понял, о чем вы: о процессе разработки или о конечном продукте?


      1. beeptec
        10.12.2022 13:53

        Эти возможности по интеграции в LW существуют с 2008 г, как впрочем и других языков, на тот случай, если разработчики хотят получить в среде полную свободу мысли.
        Самые креативные проекты построения GUI от LW к примеру SpaceX.
        К слову процесс GUI разработки ML 1:1 по образу и подобию это LW, у которого есть есть килотонны тулкитов под разные темы включая собственный exe компилятор дашборд, и прочие плюшки для создания автономного кроссплатформенного приложения с установщиком.