Как сделать экзешный файл в матлабе
Форум MATLAB и Simulink
Форум пользователей MATLAB и Simulink
Как создать файл *.exe?
Модератор: Admin
Как создать файл *.exe?
Сообщение Рюмка » Ср апр 19, 2006 10:29 am
Сообщение outsider » Ср апр 19, 2006 11:53 am
Сообщение Рюмка » Пт апр 28, 2006 11:48 am
Сообщение outsider » Пт апр 28, 2006 12:33 pm
> А можно ли из m-файла создать приложение windows а не dos?
ochen’ udiwljon, chto sozdannoe wami prilozhenie rabotaet pod DOS-om.
Nado budet w MATLAB ob etom soobshit’ – oni nawernjaka eshjo ne znajut ob etom.
Poroites’ eshjo w forume – tut na etu temu na 200% chto nibud’ naidjote!
Сообщение quosego » Вс апр 30, 2006 2:56 pm
Сообщение outsider » Вт май 02, 2006 12:48 pm
> можно ли скомпелировать файл содержащий элементы
> графического интерфейса?
Nikakix ogranichenij so storony ML Compiler po etomu powodu netu.
U menja prilozhenija s Figure kompilirujut’sja.
Сообщение Рюмка » Ср май 03, 2006 2:33 pm
Сообщение quosego » Ср май 03, 2006 2:44 pm
>Nikakix ogranichenij so storony ML Compiler po etomu powodu netu.
U menja prilozhenija s Figure kompilirujut’sja.
Outsider, компелируется и работает на любой машине?! ничего не требует?
если так напишите прошу командную строчку на выполнение компиляции, может я какой-то параметр забываю поставть.
Сообщение Серж » Ср май 03, 2006 2:54 pm
mcc -m file_name.m
или
mcc -m -N file_name.m
file_name.m – основной файл (с *.fig непробовал)
Сообщение quosego » Ср май 03, 2006 10:38 pm
Подытожу все проблемы и вопросы возникшие у меня при попытке создать независимое оконное приложение (на основе figure):
1. экзешник запускается только при наличии на машине установленного матлаба, причем версии моложе v6 не подходитят и прога не работает – требует библиотеки, причем иногда разные.
2. рядом с экзешником создается архив ctf (содержит dll, m и др.), после первого запуска он разархивируется в тот же католог. Вопрос: почему все нужные файлы сразу не положить в exe. а то не не красиво как-то.
3. при каждом запуске exe запускается консоль (что само по себе мне не нравится) и выдает следующее предупреждение:
could not find an exact (case-sensitive) match for. is a case-insensitive match and will be used instead. you can improve the performance of your code by using exact name matches and we thererefore recommend that you update your usage accordingly
ну и чегой-то он не находит? и что за case-insensitive match ? откуда берется
4. Все выше сказанное происходит по команде mcc -B sgl file (Создание независимого приложения C, использующего графическую библиотеку), а вот после ввода mcc -B sglcpp file, создается все тот же архив ctf и два файла “C” (вместо ccp. ), exe вообще не создается.
5. И наконец последний вопрос: можно ли как-нибудь перевести все графическое матлобовское окошко (это два файла: m и fig или m и mat) на С или С++, чтобы полученный файл можно было потом самому отредактировать (пусть даже файл вообще не будет содержать ничего другого из матлабовского рунтайма), а вот что можно делать с генирируемыми “С” файлами (по выше укажанной команде) вообще не представляю, они содержат только стандартные функции для создание окошка.
Надеюсь на продуктивное продолжение разговора по этой теме.
Если у кого-то есть хоть какие-нибудь соображения по этому поводу, прошу помочь советом.
Зарание благодарен.
Как создать исполняемый файл .exe из файла .m
Мне было интересно, есть ли способ создать файл “.exe” из файла “.m” в matlab, чтобы его можно запустить на машине, которая не имеет matlab (например, это можно сделать в c, С++) Я знаю, что написать функцию Matlab является одним из способов, но не уверен, может ли он работать в машине без Matlab.
Также я хотел бы скрыть свой код и просто создать script, который может запускаться пользователем, используя свои собственные файлы данных. Благодаря
Matlab Compiler – стандартный способ сделать это. mcc – это команда. Для запуска программ требуется время выполнения Matlab Runtime; Я не уверен, может ли он быть непосредственно интегрирован с исполняемым файлом или нет.
Если у вас установлен MATLAB Compiler, есть опция GUI для компиляции. Попробуйте ввести
в командной строке. Mathworks очень хорошо документирует, как использовать его в этом видеоуроке: https://www.mathworks.com/products/demos/compiler/deploytool/index.html
Кроме того, если вы хотите включить пользовательский ввод, например, выбрать файл или каталог, просмотрите
для использования в сочетании с
Также см. help mcc
Если ваш код более похож на процедуру анализа данных (по сравнению с визуализацией /GUI ), попробуйте GNU Octave. Он бесплатный, и многие его функции совместимы с MATLAB. (Не 100%, но, возможно, 99,5%.)
Метод “StandAlone” для компиляции файла .m(или файлов) требует набора файлов библиотеки Matlab (.dll) на целевой (не-Matlab) платформе, чтобы разрешить выполнение генерируемого компилятором .exe.
Проверьте основной сайт MATLAB для своих продуктов компилятора и их ограничений.
Раньше было возможно скомпилировать Matlab на C со старыми версиями Matlab. Ознакомьтесь с другими инструментами, с которыми поставляется Matlab.
Самый новый код Matlab может быть экспортирован как Java-jar или .Net Dll и т.д. Затем вы можете записать исполняемый файл с этой библиотекой – он будет запутан, кстати. Пользователям придется установить свободно доступную временную среду Matlab.
Как и многие другие, mcc/mcc.exe – это то, что вы хотите преобразовать код MATLAB в код C.
Я разработал не-matlab-программное обеспечение для прямой компиляции m файлов (TMC Compiler). Это конвертер с открытым исходным кодом проектов m файлов на C. Компилятор создает код C, который может быть связан с предоставленной библиотекой времени выполнения с открытым исходным кодом для создания автономного приложения. Библиотека реализует набор встроенных функций; операции линейной алгебры используют код LAPACK. Можно расширить набор встроенных функций посредством пользовательской реализации, как описано в документации.
Посмотрите другие вопросы по меткам matlab executable или Задайте вопрос
Работа с файлами в среде MATLAB
Создание программ часто предполагает сохранение результатов расчетов в файлы для их дальнейшего анализа, обработки и хранения. В связи с этим в среде MATLAB реализованы различные функции по работе с файлами, содержащие данные в разных форматах.
Для загрузки данных из файла,расположенного на локальном диске в рабочую средуMATLAB, используются следующие операторы:load, freadиfscanf. Для сохранения данных из рабочей среды MATLAB в файл на локальном диске предусмотрено использование следующих операторов: save, fwrite, fprintf.
В самом простом случае для сохранения и последующей загрузки каких-либо данных в среде MATLAB предусмотрены следующие функции, соответственно: save и load, имеющие следующий синтаксис:
save
load
Функция save позволяет сохранять произвольные переменные, используемые в программе в файл, который будет по умолчанию располагаться в рабочем каталоге (обычно поддиректория work) и иметь расширение mat. Соответственно функция loadпозволяет загрузить из указанного mat-файла ранее сохраненные переменные.
Недостатком функций save и load является то, что они работают с определенными форматами файлов (обычно mat-файлы) и не позволяют загружать или сохранять данные в других форматах. Между тем бывает необходимость загружать информацию, например, из бинарных файлов, созданных другими программными продуктами для дальнейшей обработки результатов в среде MATLAB. С этой целью в среде MATLAB предусмотрены следующие функции
fwrite( , , )
=fread( , , )
где: – это указатель на файл, с которым предполагается работать. Для того, чтобы получить идентификатор файла, используется функция fopen, имеющая следующий синтаксис:
=fopen( , )
где: параметр может принимать значения, приведенные в таблице 1.
В том случае, если функция fopen() по каким-либо причинам не может корректно открыть файл, то она возвращает значение –1. После выполнения всех файловых операций файл должен быть закрыт с помощью функции fcloseследующей структуры:
fclose( )
С помощью команды fclose(all)можно закрыть сразу все открытые файлы, кроме стандартных системных файлов.
Пример использования функций работы с файлами:
A=[1 2 3 4 5];
fid=fopen(‘my_file.dat’, ‘wb’);% открытие файла на запись
fwrite(fid, A, ‘double’);% запись матрицы А в файл
fclose(fid);% закрытие файла
B=fread(fid, 5, ‘double’); % чтение 5 значений в формате double
disp(B); % отображение на экране
fclose(fid); % закрытие файла
В результате выполнения данных операций в рабочем каталоге MATLABбудет создан файл my_file.dat размером 40 байт, в котором будут содержаться 5 значений типа double, записанных в виде последовательности байт (по 8 байт на каждое значение). Функция fread() считывает последовательно сохраненные байты и автоматически преобразовывает их к типу double, т.е. каждые 8 байт интерпретируются как одно значение типа double.
В приведенном примере в явном виде указывалось число элементов для считывания из файла. Однако, часто общее количество элементов бывает неизвестным, либо изменяется в процессе работы программы. В этом случае необходимо считывать данные из файла до тех пор, пока не будет достигнут его конец. В MATLAB существует функция для проверки достижения конца файла,которая возвращает 1 при достижении конца файла и 0 в других случаях и имеет следующий синтаксис:
feof( )
Таблица 1 – Режимы работы с файлами в среде MATLAB при использовании функции fopen
Источники:
https://matlab.exponenta.ru/forum/compiler-exe-matlab-f11/kak-sozdat-fajjl-exe-t3749.html
https://fooobar.com/questions/172527/how-to-create-a-executable-exe-file-from-m-file
https://studopedia.ru/19_319674_rabota-s-faylami-v-srede-MATLAB.html