Ben bir web sitesinde MATLAB kod çalıştırabilir miyim?

5 Cevap php

Kimin kodu MATLAB bir BE proje var ama ben bir web sayfasında sonuçlarını sunmak gerekiyor. Ben bir web sitesinde doğrudan benim kod çalıştırabilir olup olmadığını bilmek istiyorum? Eğer değilse, hangi dili daha iyi bir seçenek olacağını söyleyebilir misiniz? Belki ASP, HTML ve PHP düşünüyorum.

5 Cevap

Sen MATLAB derleyicisi kullanarak tek başına yürütülebilir içine MATLAB uygulama derleyebilirsiniz.

Eğer bu paket yüklü-Bu size Mathworks sağlayan en uzantıları ile bu-As için ödenen varsa, bunun için ödemeniz gerekmez yapmak olasıdır sahip olup olmadığını belirlemek için komut istemine "mcrversion" yazın.

Kodunuzu derlemek gerekiyor, ama sadece onu çalıştırmak istemiyorsanız, size bunu için gerekenleri yapmak için, komut satırı üzerinden MATLAB çağırmak mümkün olabilir.

Sinan belirtildiği gibi, bu olguların hem passthu gibi bir işlevi kullanmak istiyorsunuz.

Başka bir alternatif size (örnekler için "extern" klasörü görmek) MATLAB ile gelen kütüphaneleri kullanılarak motor aramasını sağlayan bir C API sağlar C. MATLAB MATLAB kullanmak için PHP için bir uzantısı oluşturmaktır.

: Uzantısı oluşturma aşağıdaki linki (Bu oldukça kolaydır) bakın

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

MATLAB "MATLAB C / Fortran API" için arama veya fonksiyonları üzerinde belgeler için google. Temel olarak, muhtemelen motor aramak ve bir işaretçi dönmek için EngOpen aramak gerekir.

EngEvalString kullanarak bir dize (m dosyaları. Bu şekilde yüklemek veya tipik matlab komut satırında yapabileceği her şeyi yapabilir) değerlendirin.

Eğer sonuçları (genellikle matlab komut satırına çıkış şey) görmek için gerektiğinde, sadece komutundan sonra noktalı virgül atlarsanız ve çıkış yakalamak engOutputBuffer kullanın.

İşte yazdığım şey basitleştirilmiş bir örnek:

#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);

}

Eğer derlenmiş temel bir PHP uzantısı var sonra, uzantısı haline yukarıdaki motoru aramaları atmak ve size uzantısı tanımlanan ettik PHP fonksiyonunu kullanarak MATLAB çağırabilirsiniz.

MATLAB API derlenmesi muhtemelen zor kısmıdır. İşte (PHP uzantısı kodu olmadan) benim Makefile içeriği vardır.

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

Muhtemelen uzatma çağırmadan / derleme önce LD_LIBRARY_PATH ayarlamak gerekir ... Ancak bu alternatifler vardır:

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

Sen passthru kullanarak Matlab çağırmak mümkün olacak ve sayfadaki çıkışı içermelidir.

Ayrıca Matlab komut satırı seçeneklerini on Windows veya on Unix bakın.

MATLAB. NET ile harika bir entegrasyon var. Sen MATLAB Compiler ihtiyaç + Builder NE toolbox, bir. NET tabanlı web uygulaması çalıştırabileceğiniz bir. NET derlemesi oluşturmak için.

Bazı alternatifler: Sen R kullanarak çok aynı şeyi yapabilirsiniz (bkz. this SO question), ya da muhtemelen Python + numpy/scipy tüm lisans maliyeti olmadan.

En iyi bahis matlab size matlab kod HTML oluşturmanıza olanak sağlar komutunu yayınlamak kullanıyor olabilirsiniz. Eğer gerçekten komut yaşamak yürütmek için gerek yoksa bu otomatik olarak çıktı üretmek ve rakamlar görüntü kopyasını oluşturmak için izin verir. Eğer HTML ve görüntüler üretir sonra sadece sitenize yükleyebilirsiniz.

publish command reference