Mam projekt BE, którego kod jest w MATLAB, ale muszę przedstawić wyniki na stronie internetowej. Chcę wiedzieć, czy mogę uruchomić mój kod bezpośrednio na stronie internetowej? Jeśli nie, czy możesz mi powiedzieć, który język będzie lepszym rozwiązaniem? Myślę, że może ASP, HTML i PHP.Czy mogę uruchomić kod MATLAB na stronie internetowej?
Odpowiedz
Powinieneś być w stanie wywołać MatLab używając passthru i dołączyć jego wynik na stronie.
Zobacz także opcje wiersza poleceń MatLab: on Windows lub on Unix.
jest tam nowa technologia interfejsu WWW dla MATLAB, gdzie można tworzyć interfejsy, takie jak przyciski, przycisk Dodaj plik i tekst wkład? –
Możesz skompilować aplikację MATLAB do samodzielnego pliku wykonywalnego za pomocą kompilatora MATLAB.
Wpisz "mcrversion" w monicie, aby ustalić, czy masz zainstalowany ten pakiet. - Prawdopodobnie nie robisz tego, jeśli nie zapłaciłeś za to. Jak w przypadku większości rozszerzeń, które oferuje Mathworks, musisz za to zapłacić .
Jeśli nie musisz kompilować kodu, ale po prostu go uruchomisz, możesz wywołać MATLAB za pomocą wiersza poleceń, aby zrobić to, czego potrzebujesz.
Jak wspomniał Sinan, w obu przypadkach używałbyś funkcji podobnej do passthu.
Inną alternatywą jest utworzenie rozszerzenia dla PHP do korzystania z MATLAB w C. MATLAB dostarcza C API, który pozwala na wywoływanie silnika za pomocą bibliotek, które pochodzą z MATLAB (zobacz przykłady w folderze "extern").
Zobacz poniższy link na tworzeniu rozszerzenie (Jest to dość łatwe):
http://devzone.zend.com/article/1021
wyszukiwania dla "MATLAB C/Fortran API" w MATLAB lub google dla dokumentacji dotyczącej funkcji. Zasadniczo prawdopodobnie będziesz musiał zadzwonić do EngOpen, aby zadzwonić do silnika i zwrócić wskaźnik.
Oceń ciąg za pomocą engEvalString (możesz załadować pliki .m w ten sposób lub zrobić wszystko, co możesz zrobić w typowej linii poleceń matlab).
Gdy chcesz zobaczyć wyniki (wszystko, co zwykle jest wysyłane do wiersza poleceń w programie Matlab), po średniku pominąć średnik i użyć engOutputBuffer do przechwycenia danych wyjściowych.
Oto uproszczony przykład z czegoś I napisał:
#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);
}
Gdy masz podstawową rozszerzenie PHP skompilowany, rzucać połączeń do silnika powyżej do swojego rozszerzenia i można nazwać MATLAB przy użyciu funkcji PHP które zdefiniowałeś w swoim rozszerzeniu.
Kompilowanie MATLAB API jest prawdopodobnie najtrudniejszą częścią. Oto zawartość mojego pliku Makefile (bez kodu rozszerzenia 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
Najprawdopodobniej będziesz musiał ustawić swoją LD_LIBRARY_PATH przed kompilowaniem/wywołaniem rozszerzenia ...Jednakże istnieją alternatywy do tego:
LD_LIBRARY_PATH=/usr/local/matlabR2009a/extern/lib/glnx86:/usr/local/matlabR2009a/bin/glnx86:/usr/local/matlabR2009a/sys/os/glnx86:$LD_LIBRARY_PATH
Może to jest właściwe rozwiązanie: http://www.mathworks.com/products/new_products/webserver_discontinued.html
edit zawierające te dwie strony:
Nie postawiłbym na to zbyt wiele, ponieważ został przerwany. – Agos
Ale strona zawiera również dwie alternatywy. –
Dokonałem edycji, aby uniknąć nieporozumienia, przepraszam, była moja wina. –
MATLAB ma doskonała integracja z .NET. Potrzebujesz MATLAB Compiler + the Builder NE toolbox, aby utworzyć zestaw .NET, który możesz uruchomić z aplikacji internetowej opartej na .NET.
Niektóre alternatywy: Możesz zrobić to samo, używając R (patrz this SO question) lub ewentualnie Python + numpy/scipy bez wszystkich kosztów licencjonowania.
Najlepszym rozwiązaniem może być użycie polecenia matlab publish, które umożliwia tworzenie kodu HTML z kodu matlab. Jeśli tak naprawdę nie musisz wykonywać skryptu na żywo, umożliwi to automatyczne generowanie danych wyjściowych i tworzenie kopii obrazków. Po wygenerowaniu kodu HTML i obrazów możesz po prostu przesłać je do swojej witryny.
SaturnAPI zapewnia interfejs REST dla skryptów MATLAB i Octave, tak że nie trzeba niczego instalować na własnym serwerze. Może nawet wysłać Ci zakodowane grafiki 3D Base64. Oto demo. Poniżej znajduje się diagram pokazujący, że można przekazać dane wejściowe do skryptu za pomocą zmiennej SaturnParams
w wywołaniu HTTP.
Disclosure: Pracuję na SaturnAPI
- 1. Kod PHP jest widoczny na stronie internetowej
- 2. Czy uruchomić kod na konsoli?
- 3. Czy mogę uruchomić własny javascript na (załadowanej) stronie?
- 4. Czy mogę zapobiec zawieszeniu się telefonu na stronie internetowej?
- 5. Jak mogę sprawdzić, czy Flash jest załadowany na stronie internetowej?
- 6. powiększ na stronie internetowej
- 7. Jak bezpiecznie "eval" kod użytkownika na stronie internetowej?
- 8. Jak uruchomić kod java (.class) za pomocą php i ekranu na tej samej stronie internetowej?
- 9. JQuery: Jak uruchomić podkład muzyczny na stronie internetowej?
- 10. Jak znaleźć złośliwy kod/złośliwe oprogramowanie na stronie internetowej
- 11. Tajemnicze marginesy na stronie internetowej
- 12. Jak mogę zamieścić mpg na mojej stronie internetowej?
- 13. Uruchamianie aplikacji Java na stronie internetowej
- 14. Algorytm wyszukiwania na stronie internetowej
- 15. Renderowanie dokumentu Microsoft Word na stronie internetowej
- 16. Czy istnieje sposób na znalezienie nieużywanego CSS na stronie internetowej?
- 17. show ebay feedback na mojej stronie internetowej
- 18. Jak mogę nakładać obrazy (png) na stronie internetowej?
- 19. Czy jest jakiś sposób wyłączenia panoramowania na tabletach - stronie internetowej?
- 20. jsdom nie przetwarza skryptu na stronie internetowej
- 21. Jak umieścić najnowszy tweet na stronie internetowej?
- 22. Ciągłe odtwarzanie muzyki na stronie internetowej
- 23. Zobacz kod HTML strony internetowej na tabletach
- 24. Użyj obrazów WebP na stronie internetowej
- 25. Znajdowanie złośliwego oprogramowania na stronie internetowej
- 26. publikuje na stronie internetowej za pomocą msbuild
- 27. OpenTok Api Rozsyłanie wideo na stronie internetowej
- 28. Wyświetlaj dokładny czas lokalny na stronie internetowej?
- 29. zapisywanie notatek muzycznych na stronie internetowej
- 30. TIcketmaster API? Kup bilety na stronie internetowej?
dziękuję ... chory spróbować –