Могу ли я запустить код MATLAB на веб-сайте?

У меня есть проект BE, код которого находится в MATLAB, но мне нужно представить результаты на веб-странице. Я хочу знать, могу ли я запускать свой код непосредственно на веб-сайте? Если нет, не могли бы вы сказать, какой язык будет лучшим вариантом? Я думаю, может быть, ASP, HTML и PHP.

    Вы можете скомпилировать ваше приложение MATLAB в автономный исполняемый файл, используя MATLAB-компилятор.

    В командной строке введите «mcrversion», чтобы определить, установлен ли этот пакет. Вероятно, вы этого не сделаете, если не заплатили за него. Как и в большинстве расширений, которые предоставляет Mathworks, вам нужно заплатить за это.

    Если вам не нужно компилировать свой код, а просто запустите его, вы можете вызвать MATLAB через командную строку, чтобы выполнить то, что вам нужно.

    Как упоминал Синан, в обоих случаях вы использовали бы функцию passthu.

    Другой альтернативой является создание расширения для PHP для использования MATLAB в C. MATLAB предоставляет API-интерфейс C, который позволяет вам вызывать механизм с использованием библиотек, которые поставляются с MATLAB (например, в вашей папке «extern»).

    См. Следующую ссылку на создание расширения (это довольно просто):

    http://devzone.zend.com/article/1021

    Найдите «MATLAB C / Fortran API» в MATLAB или Google для документации по функциям. В принципе, вам, вероятно, потребуется вызвать EngOpen, чтобы вызвать движок и вернуть указатель.

    Оцените строку с помощью engEvalString (вы можете загрузить файлы .m таким образом или сделать что-нибудь, что вы могли бы сделать в типичной командной строке Matlab).

    Когда вам нужно увидеть результаты (все, что обычно выводится в командной строке в matlab), просто опустите точку с запятой после команды и используйте engOutputBuffer для захвата вывода.

    Вот упрощенный пример из того, что я написал:

    #include "mat.h" #include "engine.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFFER_SIZE 256 int main() Engine *ep; char buffer[BUFFER_SIZE]; // The buffer used to capture output. buffer[BUFFER_SIZE] = '\0'; /* Terminate the last character of the buffer. */ if (!(ep = engOpen(NULL))) { fprintf(stderr, "\nCan't start MATLAB engine\n"); return EXIT_FAILURE; } if (engEvalString(ep, "load data/mymatfile.mat") != 0) printf("error evaluating expression\n"); engOutputBuffer(ep, buffer, BUFFER_SIZE); /* No output returned. */ if (engEvalString(ep, "p = 1+1;") != 0) printf("error evaluating expression\n"); /* Output written to buffer- Note the omitted character (;). */ if (engEvalString(ep, "q = p+1 ")) printf("error evaluating expression\n"); /* You will probably need to trim the whitespace in the buffer contents. I estimated +5 to pull out the prompt: ">>", but it depends on which version you have, for example, the student version displays "EDU >>\n". */ printf("print the contents of the buffer:%s\n", buffer+5); /* Turn off output buffering. */ engOutputBuffer(ep, NULL, 0); /* Close the engine. */ engClose(ep); exit(0); } 

    После того, как у вас будет скомпилировано базовое расширение PHP, бросьте вызовы на движок выше в ваше расширение, и вы можете вызвать MATLAB с помощью функции PHP, которую вы определили в своем расширении.

    Компиляция API MATLAB, вероятно, самая сложная часть. Вот содержимое моего Makefile (без кода расширения PHP).

     phpmat: phpmat.o gcc phpmat.o /usr/local/matlabR2009a/extern/lib/glnx86/version4.o /usr/local/matlabR2009a/bin/glnx86/libeng.so /usr/local/matlabR2009a/bin/glnx86/libmex.so -o phpmat phpmat.o: phpmat.c gcc -c phpmat.c -I/usr/local/matlabR2009a/extern/include -L/usr/local/matlabR2009a/extern/lib/glnx86 -L/usr/local/matlabR2009a/bin/glnx86 -L/usr/local/matlabR2009a/sys/os/glnx86 -L/usr/local/matlabR2009a/bin/glnx86 clean: rm *.o 

    Вероятно, вам нужно будет установить LD_LIBRARY_PATH перед компиляцией / вызовом расширения … Однако есть альтернативы этому:

     LD_LIBRARY_PATH=/usr/local/matlabR2009a/extern/lib/glnx86:/usr/local/matlabR2009a/bin/glnx86:/usr/local/matlabR2009a/sys/os/glnx86:$LD_LIBRARY_PATH 

    Вы должны иметь возможность ссылаться на MatLab с помощью passthru и включать его вывод на страницу.

    См. Также параметры командной строки MatLab в Windows или Unix .

    MATLAB имеет отличную интеграцию с .NET. Вам нужна панель инструментов MATLAB Compiler + the Builder NE, чтобы создать сборку .NET, которую вы можете запустить из .NET-приложения.

    Некоторые альтернативы: вы можете сделать то же самое, используя R (см. Этот вопрос SO ), или, возможно, Python + numpy / scipy без всех лицензионных затрат.

    Возможно, это правильное решение: http://www.mathworks.com/products/new_products/webserver_discontinued.html

    редактирование, содержащее эти две страницы:

    http://www.mathworks.com/products/netbuilder/

    http://www.mathworks.com/products/javabuilder/

    Лучше всего, если вы используете команду публикации matlab, которая позволяет вам создавать HTML-код из вашего кода. Если вам действительно не нужно выполнять сценарий live, это позволит вам автоматически генерировать ваш вывод и создавать копии изображений ваших рисунков. После создания HTML и изображений вы можете просто загрузить их на свой сайт.

    публиковать ссылку на команду

    SaturnAPI предоставляет интерфейс REST для скриптов Matlab и Octave, поэтому вам не нужно ничего устанавливать на своем сервере. Он даже может отправлять вам 3D-графики Base64. Вот демо . Ниже приведена диаграмма, показывающая, что вы можете передавать входные данные сценарию через переменную SaturnParams в HTTP-вызове.

    введите описание изображения здесь

    Раскрытие информации: я работаю над SaturnAPI