¿Cómo llamo a Matlab en un script en Windows?
scripting automation (1)
Estoy trabajando en un proyecto que usa varios idiomas:
- SQL para consultar una base de datos
- Perl / Ruby para un procesamiento rápido y sucio de los datos de la base de datos y otras tareas de contabilidad
- Matlab para cálculos orientados a la matriz
- Varios lenguajes de estadísticas (SAS / R / SPSS) para procesar la salida de Matlab
Cada idioma se adapta bien a su nicho y ya tenemos una buena cantidad de código en cada uno. En este momento, hay mucho trabajo manual para ejecutar todos estos pasos que estarían mejor guionados. Ya he hecho esto en Linux, y funciona relativamente bien.
En Linux:
matlab -nosplash -nodesktop -r "command"
o
echo "command" | matlab -nosplash -nodesktop
... abre Matlab en un modo de "línea de comando". (Es decir, no se crean ventanas; simplemente lee de STDIN, se ejecuta y se envía a STDOUT / STDERR.) Mi problema es que en Windows (XP y 7), este mismo código abre una ventana y no lee desde / escribir a la línea de comando. Solo me queda mirando fijamente a la cara, ignorando por completo a STDIN y STDOUT.
¿Cómo puedo ejecutar secuencias de comandos ejecutando comandos de Matlab en Windows? Básicamente quiero algo que haga:
ruby database_query.rb
perl legacy_code.pl
ruby other_stuff.rb
matlab processing_step_1.m
matlab processing_step_2.m
# etc, etc.
Descubrí que Matlab tiene un indicador de -automation
en Windows para iniciar un "servidor de automatización" . Eso suena excesivo para mis propósitos, y me gustaría algo que funcione en ambas plataformas.
¿Qué opciones tengo para automatizar Matlab en este flujo de trabajo?
matlab -nosplash -nodesktop -r "command"
funciona en Windows también. Sí, abre otra ventana, pero no es un problema. Lo ejecuto en modo batch desde el envoltorio de Java en el servidor Tomcat y no hubo problemas. Coloque todos los comandos en un archivo de script, no olvide cerrar la sesión con el comando de salida y use el indicador -r. También puede encontrar -noFigureWindows y -wait parameters useful. Y funciona tanto en Windows como en Unix. Puede usar indicadores específicos de plataforma, si algunos no son compatibles, serán ignorados.
Inicie el programa MATLAB (plataformas Windows)
También hay una manera de ocultar la ventana de Matlab con la biblioteca C. Ver engSetVisible .