Ich habe ein BE-Projekt, dessen Code in MATLAB ist, aber ich muss Ergebnisse auf einer Webseite präsentieren. Ich möchte wissen, ob ich meinen Code direkt auf einer Website ausführen kann. Wenn nicht, könnten Sie mir sagen, welche Sprache eine bessere Option wäre? Ich denke vielleicht ASP, HTML und PHP.Kann ich MATLAB-Code auf einer Website ausführen?
Antwort
Sie sollten MatLab mit passthru aufrufen und seine Ausgabe auf der Seite einbeziehen können.
Siehe auch MatLab-Befehlszeilenoptionen on Windows oder on Unix.
gibt es eine neue Technologie für Web-UI für Matlab, wo Sie Schnittstellen wie Schaltflächen erstellen können, Datei-Upload-Button und Text Eingang? –
Sie können Ihre MATLAB-Anwendung mit dem MATLAB-Compiler in eine eigenständige ausführbare Datei kompilieren.
Geben Sie "mcrversion" an der Eingabeaufforderung ein, um festzustellen, ob Sie dieses Paket installiert haben. Wahrscheinlich haben Sie es nicht, wenn Sie nicht dafür bezahlt haben. Wie bei den meisten Erweiterungen von Mathworks müssen Sie dafür bezahlen .
Wenn Sie Ihren Code nicht kompilieren, sondern einfach ausführen müssen, können Sie MATLAB möglicherweise über die Befehlszeile aufrufen, um das auszuführen, was Sie benötigen.
Wie Sinan erwähnt, würden Sie in beiden Fällen eine Funktion wie passthus verwenden. Eine andere Alternative ist es, eine Erweiterung für PHP zu erstellen, um MATLAB in C zu verwenden. MATLAB bietet eine C-API, mit der Sie die Engine mithilfe von Bibliotheken aufrufen können, die mit MATLAB geliefert werden (Beispiele finden Sie in Ihrem Ordner "extern").
Siehe folgenden Link, um die Erweiterung auf der Schaffung von (Es ist ganz einfach):
http://devzone.zend.com/article/1021
Suche nach "MATLAB C/Fortran API" in MATLAB oder Google für die Dokumentation auf Funktionen. Grundsätzlich müssen Sie EngOpen aufrufen, um die Engine aufzurufen und einen Zeiger zurückzusetzen.
Werten Sie eine Zeichenfolge mit engEvalString aus (Sie können .m-Dateien auf diese Weise laden oder alles tun, was Sie in der typischen matlab-Befehlszeile tun könnten).
Wenn Sie die Ergebnisse sehen müssen (alles, was normalerweise in der Befehlszeile in Matlab ausgegeben wird), lassen Sie einfach das Semikolon nach dem Befehl weg und verwenden Sie engOutputBuffer, um die Ausgabe zu erfassen.
Hier ist ein vereinfachtes Beispiel von etwas, das ich schrieb:
#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);
}
Sobald Sie eine grundlegende PHP-Erweiterung kompiliert erhalten haben, die Anrufe an den Motor in die Verlängerung oben werfen und Sie können MATLAB die PHP-Funktion aufrufen dass Sie in Ihrer Erweiterung definiert haben.
Das Kompilieren der MATLAB API ist wahrscheinlich der schwierigste Teil. Hier sind die Inhalte meines Makefiles (ohne den PHP-Erweiterungscode).
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
Sie müssen wahrscheinlich Ihren LD_LIBRARY_PATH vor dem Kompilieren/Aufrufen der Erweiterung festlegen ...Allerdings gibt Alternativen dazu sind:
LD_LIBRARY_PATH=/usr/local/matlabR2009a/extern/lib/glnx86:/usr/local/matlabR2009a/bin/glnx86:/usr/local/matlabR2009a/sys/os/glnx86:$LD_LIBRARY_PATH
Vielleicht ist dies die richtige Lösung: http://www.mathworks.com/products/new_products/webserver_discontinued.html
bearbeiten enthalten diese zwei Seiten:
Ich würde nicht viel darauf wetten, da es eingestellt wird. – Agos
Aber die Seite enthält auch zwei Alternativen. –
Eine Bearbeitung gemacht, um ein Missverständnis zu vermeiden, sorry, war meine Schuld. –
MATLAB hat große Integration mit .NET. Sie benötigen die MATLAB Compiler + die Builder NE toolbox, um eine .NET-Assembly zu erstellen, die Sie von einer .NET-basierten Webanwendung ausführen können.
Einige Alternativen: Sie können die gleiche Sache mit R (siehe this SO question) oder möglicherweise Python + numpy/scipy ohne alle Lizenzkosten tun.
Am besten verwenden Sie den Befehl matlab publish, mit dem Sie HTML aus Ihrem Matlab-Code erstellen können. Wenn Sie das Skript nicht wirklich ausführen müssen, können Sie Ihre Ausgabe automatisch generieren und Bildkopien Ihrer Figuren erstellen. Nachdem Sie den HTML-Code und die Bilder erstellt haben, können Sie diese einfach auf Ihre Website hochladen.
SaturnAPI bietet eine REST-Schnittstelle für Matlab und Octave-Skripte, so dass Sie müssen nicht alles auf Ihrem eigenen Server installieren. Es kann sogar Base64-kodierte 3D-Diagramme an Sie senden. Hier ist die demo. Unten sehen Sie ein Diagramm, das zeigt, dass Sie Eingaben über die Variable SaturnParams
im HTTP-Aufruf an das Skript übergeben können.
Disclosure: Ich auf SaturnAPI arbeiten
- 1. Ausführen einer Ruby-Website auf localhost
- 2. Ausführen einer Silverlight-Website
- 3. Kann ich AdSense auf einer anderen Website bekommen?
- 4. Wie kann ich mich mit Python auf einer Website anmelden?
- 5. Kann ich das Gebietsschema auf einer Windows Azure-Website ändern?
- 6. Wie kann ich benutzerdefinierte Schriftarten auf einer Website verwenden?
- 7. Wie kann ich OCR auf einer Website mit PHP implementieren?
- 8. Wie kann ich mich mit Python auf einer Website anmelden?
- 9. Wie kann ich PM2 auf einer bestimmten Knotenversion ausführen?
- 10. Balkendiagramme auf einer Website
- 11. Zahlung auf einer Website
- 12. Messung auf einer Website
- 13. Wie kann ich eine Ruby-Website mit einer Datenbank sichern?
- 14. Kann ich bitweise Operationen auf Byte [] ausführen?
- 15. Kann ich .jar-Datei auf Tomcat ausführen?
- 16. Kann ich KiGG auf XP Pro ausführen?
- 17. Ich kann Cassandra auf Kubernetes nicht ausführen
- 18. Kann ich Azure-Cmdlets/Powershell-Skripts aus Code innerhalb einer Azure-Website ausführen?
- 19. Kann ich ASP.NET 2.0- und 3.5-Code auf derselben Website ausführen?
- 20. Wie kann ich in einer Aschex- und Aspx-Datei auf der gleichen Website auf/async zugreifen?
- 21. Wie kann ich feststellen, ob ich für gcc4 kompilierte ausführbare Dateien auf einer Box ausführen kann?
- 22. Werbung auf einer ASP.NET-Website
- 23. Wo kann ich Counter auf der PHP + MySQL Website speichern?
- 24. Kann ich Javascript basierend auf der Fenstergröße ausführen?
- 25. Ausführen eines benutzerdefinierten VirtualPathProvider mit einer PreCompiled-Website
- 26. Implement Unit Testing auf einer älteren Website
- 27. Zeichnen Panel auf einer Website?
- 28. Ich kann nicht auf WhatsApp von meiner Website teilen
- 29. Ausführen eines Warteschlangen-Hintergrundprozess auf einem extern gehosteten Website
- 30. Wie kann ich die Einstellungen einer Website in IIS7 duplizieren?
danke ... krank versuchen es –