La extensibilidad es una de las características de JMP. En JMP 11 , puedes integrar JMP con MATLAB. Desde JMP Scripting Language (JSL), puede enviar datos de JMP a MATLAB, ejecutar funciones de MATLAB y enviar los resultados de MATLAB a JMP para su posterior análisis y visualización.
MATLAB, una solución de software de MathWorks, es un lenguaje de programación matricial y un entorno de programación interactivo para computación numérica, análisis de datos, visualización y creación de modelos y aplicaciones de ingeniería personalizados. Incluye un amplio conjunto de módulos adicionales, conocidos como cajas de herramientas, que brindan a los usuarios de MATLAB acceso a funciones para realizar trabajos especializados de diseño y modelado según sea necesario.
La interfaz de MATLAB en JMP proporciona acceso a MATLAB a través de JSL con un conjunto de funciones. El modelo de ejecución básico es inicializar primero una conexión MATLAB, realizar las operaciones MATLAB requeridas y luego terminar la conexión MATLAB. El paradigma de uso es muy similar a la interfaz R en JMP.
En esta publicación, quería resaltar brevemente cómo hacer que la interfaz esté funcionando en su instalación de JMP 11 y presentar algunos ejemplos básicos de cómo usar la interfaz. Para una inmersión más profunda en los detalles de la interfaz, sugiero descargar el papel blanco que fui coautor con John Salmon, PhD, un ingeniero de investigación en el Laboratorio de Diseño de Sistemas Aeroespaciales en el Instituto de Tecnología de Georgia.
Primero lo primero: salgamos las instrucciones de instalación. Las instrucciones detalladas están disponibles en nuestro sitio web. ayuda , pero aquí hay una guía de inicio rápido.
MATLAB debe instalarse en la misma computadora que JMP, y JMP no se distribuye con una copia de MATLAB.Debido a que JMP es compatible tanto como una aplicación de Windows de 32 bits como de 64 bits, debe instalar la versión correspondiente de MATLAB de 32 bits o de 64 bits.JMP retrasa la carga de MATLAB hasta que un script JSL requiera acceso a él. Cuando JMP necesita cargar MATLAB, se ubica en función de la ruta de búsqueda actual usando una Variable PathVar. Esto debe establecerse utilizando las preferencias de plataforma de la interfaz de MATLAB.Si configura MATLABROOT en la ruta de la instalación de MATLAB en su computadora, se asegurará de que JMP sepa dónde encontrar MATLAB (como se muestra en la siguiente figura).
Después de establecer la ruta en las preferencias de la plataforma, puede realizar una comprobación rápida para asegurarse de que su conexión MATLAB funciona correctamente ejecutando un MATLAB Init (); función. Si la conexión ha sido exitosa, la función devolverá 0 al registro. Si la operación no tuvo éxito, aparecerá un mensaje de error.
Así que vamos a ver un ejemplo de cómo funciona la interfaz. Este ejemplo muestra cada etapa del flujo de trabajo de la interfaz, por lo que sirve como un buen prototipo de scripts más complejos. El primer paso es inicializar la conexión de MATLAB con un MATLAB Init (); llamada. Luego, usamos un MATLAB Submit (); Función para ejecutar algún código MATLAB en MATLAB. En este caso, estamos ejecutando la función "mágica" con un parámetro de entrada de 3 y almacenando los resultados en una variable llamada metro. Para traer el metro Matriz en el espacio de variables JMP para un uso adicional de los resultados en JMP, ejecutamos MATLAB Get (); función, que toma los datos almacenados en metro y lo asigna a una variable JMP, que hemos nombrado: magicMat . Para ver los resultados de nuestro pequeño programa, escribimos los contenidos de magicMat al registro y lleve los datos a una tabla de datos JMP como se muestra en la figura a continuación. Y finalmente, terminamos nuestra sesión de MATLAB con un término de MATLAB (); mando.

El beneficio aquí es que los datos de nuestro programa MATLAB ahora están en una tabla de datos JMP y están listos para ser visualizados, modelados o explorados sin ninguna otra codificación MATLAB. También obtiene la interactividad de JMP para explorar la salida del modelo MATLAB y puede usar las herramientas JMP para la visualización de datos (por ejemplo, a través de Graph Builder, Control Chart Builder, Distribución), análisis de datos (ajuste de modelo, partición, detección, etc.), así como limpieza de datos adicionales y resumen (herramientas en el Mesas Menú, tabular, etc.). 
Ahora que hemos hecho algo básico, vamos a divertirnos un poco más. Una de mis aficiones fuera del trabajo es el diseño y construcción de altavoces. A continuación se muestra una imagen de mi diseño actual en progreso. Veremos cómo puedo usar MATLAB y JMP para ayudarme en el diseño y ajuste de estos altavoces. Una de las grandes cosas que he agregado a mi configuración en el último año es un MiniDSP. El MiniDSP es un dispositivo pequeño y sorprendente que ha hecho mucho más fácil la creación rápida de prototipos de altavoces y cruces, y también me ha ahorrado la molestia y el gasto de tener que comprar componentes de cruce pasivo.

El MiniDSP me permite hacer varias cosas: alineación de tiempo, filtros de cruce de paso alto y bajo y corrección de sala. ¿Cómo sé lo que debo hacer para que mis altavoces suenen mejor en mi habitación? Creo lo que se conoce como respuesta impulsiva (IR) reproduciendo una señal de medición de onda sinusoidal barrida a través de los altavoces y luego grabando la salida con un micrófono. Restar la señal seca de la señal húmeda, medida crea el IR. Lo que queda es un conjunto de datos que describe cómo se descompone el sonido en mi habitación. Pero lo que necesito saber realmente no es realmente los datos que se encuentran en el dominio del tiempo, sino la respuesta de frecuencia de mis altavoces. Afortunadamente, esto es fácil de analizar dados los datos del dominio del tiempo mediante el uso de un algoritmo de transformada rápida de Fourier (FFT).
El ejemplo que voy a mostrarles es una medida que tomé cuando intentaba verificar qué tan cerca estaban los giros de mis puertos de reflejo de bajos al modelo que construí del gabinete. Para ello, coloqué el micrófono cerca del altavoz entre los dos puertos de mi altavoz izquierdo. No tengo que preocuparme por los reflejos de la sala, porque el sonido directo de los puertos tiene una amplitud mucho mayor que el sonido reflejado. Para ver la respuesta de banda ancha de los altavoces, voy a tener que emplear un método diferente (que consiste en sacar los altavoces y colocarlos en un pedestal y luego eliminar los reflejos de la ventana), pero eso tendrá que esperar hasta que sea un un poco más caliente).
Así que aquí están los datos del dominio del tiempo de mi medición:

Lo que realmente quiero hacer es convertir este dominio de frecuencia para que podamos trazar la respuesta y responder nuestra pregunta: ¿Resuena el puerto donde debería estar (alrededor de 55 Hz)?
Para este análisis, quiero tomar los datos de JMP, enviarlos a MATLAB, ejecutar una función que he escrito para realizar la FFT y devolver el vector resultante a una nueva tabla de datos con las bandejas de frecuencia correctamente etiquetadas (indicando mi función MATLAB cuál es mi frecuencia de muestreo).
Para automatizar este análisis en el futuro para nuevas mediciones, he convertido este análisis en una nueva aplicación JMP, que luego se puede empaquetar como un complemento y agregar a mi menú JMP. Es un diálogo simple que solicita la columna, que tiene los datos de amplitud.

Cuando presiono OK, ejecutará la JSL que redondeará mis datos a MATLAB, realizará la FFT y devolverá los resultados del análisis a una tabla de datos. El código realmente requerido para ejecutar el script MATLAB es bastante simple. En la línea 26, envío la variable. yvec , que corresponde al rol de respuesta que el usuario ha seleccionado en la aplicación para el espacio de variable MATLAB. Luego, presento el código MATLAB requerido para ejecutar mi función FFT. En mi caso, sé que todos mis RI se muestrean a 44.1 kHz, por lo que lo he codificado en la lista de entrada para mi función de calcFFT. Si la frecuencia de muestreo variaba, podría agregar un campo de entrada de texto a mi aplicación y luego pasar la selección a mi llamada de función.

Mi función devuelve dos vectores que me interesan, el fftsignal y el freqArray. Luego puedo jalar esas dos variables al espacio de variables JMP con MATLAB Get (); Funciona y crea una tabla a partir de los resultados.
Después de tener mis resultados, puedo usar Graph Builder para generar mi gráfico de respuesta de frecuencia:

Me he centrado solo en la respuesta de frecuencia de 20 Hz a 400 Hz, por lo que puedo ver el comportamiento de ajuste de puerto (que aparece como un pico en el gráfico). Es un poco más alto de lo que esperaba en base a mi modelo, por lo que es posible que necesite agregar un poco de refuerzo de graves al canal de baja frecuencia en el MiniDSP para tener la respuesta de frecuencia que necesito en mi habitación.
Acabo de mostrar un ejemplo de dónde podemos usar JMP y MATLAB juntos para ampliar las capacidades de JMP. En el documento técnico, veremos varios otros ejemplos, incluido el uso de JMP para configurar un diseño de experimentos con Custom Designer, ejecutar experimentos de simulación en MATLAB y luego devolver los resultados a JMP para su análisis, elaboración de perfiles de factores y evaluación de importancia variable.
¿Ya has usado la interfaz JMP para MATLAB en JMP 11? Si es así, me encantaría escuchar tu historia!
emmanuel escribió:
Hay algunos errores en los scripts, también estaba viendo uno de los videos y hay algunos errores tipográficos.
El primer ejemplo tiene error de nombre Colum, en el registro. Así que tengo que eliminar esa parte para:
MATLAB Init ();
MATLAB Enviar ("m = magia (3)");
magicMat = MATLAB obtener (m);
espectáculo (magicMat);
dt = como tabla (magicMAt);
MATLAB Term ();
Así podría funcionar
La FFT es la parte que me interesa, debe comenzar con MATLAB Init ();
Actualmente tengo un error en el registro.
"Función no definida 'calcFFT_FR12' para argumentos de entrada de tipo 'doble'".
¿Me puede enviar también la muestra de datos de 25,000?
Así que puedo revisarlo
Gracias por adelantado
Además, ¿cómo agregamos la ruta al script JMP para que se puedan invocar todas las funciones de MATLAB en lugar de cambiar el directorio cada vez?
Es extraño que escribiera
MATLAB Submit ("cd '\\ las-cifs01 \ myfilename"); // en lugar de la línea cd REPLACE
// MATLAB Submit ("cd 'REPLACE'");
Busca una carpeta en cd '\\ las-cifs01 \ myfilename \ REPLACE
No especifiqué que vamos a ir a la carpeta REEMPLAZAR