Un amigo me preguntó acerca de la creación de una pequeña interfaz web que acepta algunas entradas, los envía a MATLAB para el cálculo de números y salidas de los resultados. Soy un Python/Django desarrollador por el comercio, por lo que puedo manejar la interfaz de la web, pero yo soy de la idea cuando se trata de MATLAB. Específicamente:

  • Me gustaría realmente como para evitar el alojamiento esta en un servidor de Windows. Cualquier problemas para conseguir MATLAB ejecuta en Linux con secuencias de comandos en Windows?
  • Debería estar buscando en los bombardeos a cabo, los comandos de compilación en C y el uso de ctypes para interactuar con ella?
  • Si la compilación es el camino a seguir, hay algo que debo saber sobre cómo se compila y de trabajo en Python? (Ha sido un largo tiempo desde que he compilado o trabajado con C)

Cualquier sugerencias, consejos o trucos sobre cómo quitar esto?

  • Tenga en cuenta que esto sería una violación de la licencia de MATLAB. Tal vez si usted está en una Universidad a la que iba a salirse con la suya, pero para MATLAB usted necesita una licencia para cada usuario final – es decir, todo el que se va a usar el interfaz web. Yo estaba tratando de configurar algunas computacional de los servicios web y nos dijeron de este requisito – que al final tuvimos que usar Matlab compiler para crear un archivo ejecutable independiente que no tiene esta restricción (o cambiar a Python completamente – Numpy/Scipy/Matplotlib proporcionar una bastante completa de reemplazo).
InformationsquelleAutor Pete | 2010-02-13

5 Comentarios

  1. 17

    Hay un python, matlab puente que es único en el sentido de que Matlab ejecuta en segundo plano como un servidor, de modo que usted no tiene el costo de inicio cada vez que se llama a una función de Matlab.

    es tan fácil como descargar y el siguiente código:

    from pymatbridge import Matlab
    mlab = Matlab(matlab='/Applications/MATLAB_R2011a.app/bin/matlab')
    mlab.start()
    res = mlab.run('path/to/yourfunc.m', {'arg1': 3, 'arg2': 5})
    print res['result']

    donde el contenido de yourfunc.m sería algo como esto:

    %% MATLAB
    function lol = yourfunc(args)
        arg1 = args.arg1;
        arg2 = args.arg2;
        lol = arg1 + arg2;
    end
  2. 13

    Echa un vistazo a mlabwrap que te permite llamar a Matlab a través de una API de python

    • En la segunda mlabwrap. Sin embargo, yo preferiría un puro Python solución como numpy, actualmente estoy usando mlabwrap a leer algunos datos de archivo, procesarlos en Python enviar a Matlab y, a continuación, obtener los resultados. Usted puede tener la sobrecarga de problemas con el arranque el entorno Matlab cada vez que llega una petición.
    • También estoy de acuerdo en que mlabwrap es increíblemente fácil de usar. Sin embargo, como Amac dijo, la sobrecarga es muy significativo. Para poner algunos números de este, un cálculo que estoy usando (función de optimización.lsqlin) toma 0.01 segundos para terminar cuando se llama desde matlab, pero cuando se llama desde python con los mismos parámetros utilizando mlabwrap toma 0.30 segundos para terminar.
    • Una continuación del proyecto: mlab
  3. 1

    Con respecto a la compatibilidad con el SO, si usted utiliza matlab versión para Linux, los scripts escritos en windows debería funcionar sin ningún tipo de cambios.
    Si es posible, también se puede considerar la posibilidad de hacer todo con python. Scipy/numpy con Matplotlib de proporcionar una completa Matlab reemplazo.

  4. -1

    Tal vez usted encontrará información útil aquí

    PyMat – Una interfaz entre Python y MATLAB

    • -1 – lo siento, pero esto es realmente fuera de la fecha y se prob tienen problemas para llegar a construir (el docs todavía se refieren a Numérico)… mlabwrap es el camino a seguir (mantiene activa y funciona con los últimos matlab)

Dejar respuesta

Please enter your comment!
Please enter your name here