Ответ 1
У вас есть несколько вариантов:
-
установлен MATLAB на сервере, где будет развернуто приложение PHP (а не текущая среда разработки)? Если это так, вы можете вызвать его прямо так же, как любая другая программа (
maltab -r "..."
), используя все, что эквивалентно командеEXECUTE
в PHP. Вот некоторые ресурсы (обязательно проверьте также связанные вопросы):- Как вызывать MATLAB из командной строки и печатать в stdout перед выходом
- Запуск cmd файла без появления графического пользовательского интерфейса
- Pass Parameters _ Shell Script - Octave Script
Другие прокомментировали, как передать ввод/вывод между PHP и вашим MATLAB script. Например, вы можете создать свою функцию MATLAB, чтобы получить путь к файлу WAV в качестве входных данных, обработать ее и сохранить любое результирующее изображение на диск:
function myFunc(filename) [y,Fs] = audioread(filename); img = my_process_func(y,FS); imwrite(img, 'out.png'); end
Что вызывается из PHP как:
% of course you have to make sure "myFunc" is available on the MATLAB path. % think: "addpath(..)" or just "cd(..)" into the directory first matlab -wait -nodisplay -r "myFunc('audio.wav'); quit;"
вы можете прочитать выходное изображение в приложении PHP.
-
Если нет, какие панели инструментов, связанные с развертыванием, у вас есть? MATLAB Compiler и связанные с ним панели инструментов, такие как MATLAB Builder NE и MATLAB Builder JA.
Они будут скомпилировать вашу программу в исполняемый файл /Assembly Assembly/JAR, соответственно, и все они требуют свободно доступного MCR Runtime быть установленным. Другими словами, исполняемым файлам не требуется полная установка MATLAB на целевой машине, а только время выполнения MCR.
Вы выполнили бы исполняемый файл таким же образом, как и раньше.
Другим продуктом является MATLAB Coder, который преобразует ваш код MATLAB в программу на С++. При компиляции он может работать без каких-либо внешних требований.
Новый продукт Mathworks - Сервер производства MATLAB. Лично я ничего об этом не знаю:)
-
Еще один вариант - использовать TCP/IP для связи между PHP и MATLAB. Сервер будет запускаться на стороне MATLAB, используя программирование сокетов, написанное как C MEX файл или Java-класс. См:
Клиент, являющийся вашим PHP-приложением. Идея состоит в том, чтобы MATLAB прослушивал соединения, считывая любой вход, предоставленный клиентом,
eval
it и возвращает результат. Это более активно, чем другие варианты, поскольку вам приходится иметь дело с сериализацией и другими вещами вроде concurrency. Преимущество состоит в том, что MATLAB можно запускать на отдельном сервере, даже на нескольких серверах в облаке (см. этот пост).
Итак, во-первых, решите, какой подход лучше всего подходит вашему проекту, тогда было бы легче ответить на конкретные вопросы. Просто всегда консультируйтесь с документами, панели инструментов MATLAB очень хорошо документированы и обычно включают в себя множество примеров. Вот еще несколько ресурсов, характерных для семейства продуктов MATLAB Compiler:
- Вебинар: развертывание приложений с помощью MATLAB
- Файл PDF: развертывание приложений MATLAB - руководство по веб-интерфейсу
Обратите внимание, что они сосредоточены на приложениях ASP.NET и Java JSP/сервлетов. В вашем случае приложение PHP будет взаимодействовать со средним уровнем, на котором запущен веб-сервис, построенный с использованием одного из указанных выше двух параметров (или просто создайте CGI-подобный сайт, на котором выполняются простые исполняемые файлы, созданные с использованием MATLAB-компилятора, как объяснялось ранее)
НТН