L'estensibilità è uno dei tratti distintivi di JMP. Nel JMP 11 , puoi integrare JMP con MATLAB. Da JMP Scripting Language (JSL), è possibile inviare dati da JMP a MATLAB, eseguire funzioni MATLAB e restituire risultati da MATLAB a JMP per ulteriori analisi e visualizzazione.
MATLAB, una soluzione software di MathWorks, è un linguaggio di programmazione a matrice e un ambiente di programmazione interattivo per il calcolo numerico, l'analisi dei dati, la visualizzazione e la creazione di modelli e applicazioni di ingegneria personalizzati. Include un ricco set di moduli aggiuntivi, noti come toolbox, che forniscono agli utenti di MATLAB l'accesso alle funzioni per eseguire lavori di modellazione e progettazione specializzati secondo necessità.
L'interfaccia MATLAB in JMP fornisce accesso a MATLAB tramite JSL con un set di funzioni. Il modello di esecuzione di base consiste nel prima inizializzare una connessione MATLAB, eseguire le operazioni MATLAB necessarie e quindi terminare la connessione MATLAB. Il paradigma di utilizzo è molto simile all'interfaccia R in JMP.
In questo post, ho voluto evidenziare brevemente come ottenere l'interfaccia attiva e in esecuzione sull'installazione di JMP 11 e presentare alcuni esempi di base su come utilizzare l'interfaccia. Per un'immersione più profonda nello specifico dell'interfaccia, suggerisco di scaricare il carta bianca che sono stato co-autore di John Salmon, PhD, ingegnere di ricerca presso il Laboratorio di progettazione dei sistemi aerospaziali presso il Georgia Institute of Technology.
Per prima cosa, prima: prendiamo le istruzioni per l'installazione. Le istruzioni dettagliate sono disponibili nel nostro online Aiuto , ma ecco una guida rapida.
MATLAB deve essere installato sullo stesso computer di JMP e JMP non è distribuito con una copia di MATLAB.Poiché JMP è supportato sia come applicazione Windows a 32 bit che a 64 bit, è necessario installare la versione corrispondente di MATLAB a 32 o 64 bit.JMP ritarda il caricamento di MATLAB fino a quando uno script JSL non ha bisogno di accedervi. Quando JMP deve caricare MATLAB, si trova in base al percorso di ricerca corrente utilizzando a Variabile PathVar. Questo dovrebbe essere impostato usando le preferenze della piattaforma dell'interfaccia MATLAB.Impostando MATLABROOT sul percorso dell'installazione MATLAB sul tuo computer, assicurati che JMP sappia dove trovare MATLAB (come mostrato nella figura seguente).
Dopo che il percorso è stato impostato nelle preferenze della piattaforma, è possibile eseguire un controllo rapido per assicurarsi che la connessione MATLAB funzioni eseguendo MATLAB Init (); funzione. Se la connessione ha avuto successo, la funzione restituirà 0 nel registro. Se l'operazione non ha avuto successo, riceverai un messaggio di errore.
Quindi passiamo direttamente a un esempio di come funziona l'interfaccia. Questo esempio mostra ogni fase del flusso di lavoro dell'interfaccia, quindi funge da buon prototipo di script più complessi. Il primo passo è inizializzare la connessione MATLAB con MATLAB Init (); chiamata. Quindi, usiamo MATLAB Submit (); funzione per eseguire codice MATLAB in MATLAB. In questo caso, stiamo eseguendo la funzione "magica" con un parametro di input di 3 e memorizzando i risultati in una variabile denominata m. Al fine di portare il m matrice nello spazio variabile JMP per un ulteriore utilizzo dei risultati in JMP, eseguiamo il MATLAB Get (); funzione, che prende i dati memorizzati in m e lo assegna a una variabile JMP, che abbiamo chiamato: magicMat . Per vedere i risultati del nostro piccolo programma, scriviamo il contenuto di magicMat al log e portare i dati in una tabella di dati JMP come mostrato nella figura seguente. Infine, concludiamo la nostra sessione MATLAB con un MATLAB Term (); comando.

Il vantaggio qui è che i dati del nostro programma MATLAB sono ora in una tabella di dati JMP e pronti per essere visualizzati, modellati o analizzati senza alcuna ulteriore codifica MATLAB. Otterrai inoltre l'interattività di JMP per esplorare l'output del modello MATLAB e potrai utilizzare gli strumenti JMP per la visualizzazione dei dati (ad esempio, tramite Graph Builder, Control Chart Builder, Distribuzione), analisi dei dati (Fit Model, Partition, Screening, ecc.) E pulizia e riepilogo dei dati aggiuntivi (strumenti in tabelle menu, Tabulazione, ecc.). 
Ora che abbiamo fatto qualcosa di essenziale, divertiamoci un po 'di più. Uno dei miei hobby al di fuori del lavoro è la progettazione e la costruzione dei diffusori. Di seguito è riportata una foto della mia attuale progettazione in corso. Vedremo come posso usare MATLAB e JMP per aiutarmi nella progettazione e messa a punto di questi diffusori. Una delle grandi cose che ho aggiunto al mio setup nell'ultimo anno è un MiniDSP. Il MiniDSP è un piccolo dispositivo straordinario che ha reso la prototipazione rapida di altoparlanti e crossover molto più facile, e mi ha anche risparmiato il fastidio e la spesa di dover acquistare componenti crossover passivi.

Il MiniDSP mi consente di fare una serie di cose: allineamento temporale, filtri crossover passa basso e passa alto e correzione della camera. Come faccio a sapere cosa devo fare per far suonare meglio i miei altoparlanti nella mia stanza? Creo ciò che è noto come un risposta impulsiva (IR) riproducendo un segnale di misurazione dell'onda sinusoidale attraverso gli altoparlanti e registrando l'uscita con un microfono. Sottraendo il segnale secco dal segnale bagnato e misurato si crea l'IR. Quello che rimane è un set di dati che descrive come i decadimenti sonori nella mia stanza. Ma quello che ho bisogno di sapere in realtà non è proprio quel dato che è nel dominio del tempo, ma piuttosto la risposta in frequenza dei miei altoparlanti. Fortunatamente, questo è facile da analizzare dato i dati del dominio del tempo usando un algoritmo Fast Fourier Transform (FFT).
L'esempio che sto per mostrarvi è una misurazione che ho fatto quando stavo cercando di verificare quanto il passaggio delle mie porte bass reflex fosse vicino al modello che ho costruito nel cabinet. Per questo, ho posizionato il microfono vicino all'altoparlante tra le due porte sul mio altoparlante sinistro. Non devo preoccuparmi dei riflessi della stanza per questo perché il suono diretto dalle porte è molto più grande in ampiezza rispetto al suono riflesso. Per guardare la risposta della banda larga dagli altoparlanti, dovrò impiegare un metodo diverso (che consiste nel portare i diffusori all'esterno e metterli su un piedistallo e quindi nascondere i riflessi - ma che dovrà aspettare fino a quando non sarà un un po 'più caldo).
Quindi ecco i dati del dominio del tempo della mia misurazione:

Quello che voglio veramente è convertire il dominio della frequenza in modo che possiamo tracciare la risposta e rispondere alla nostra domanda: la porta sta risonando dove dovrebbe essere (circa 55 Hz)?
Per questa analisi, voglio prendere i dati da JMP, inviarli a MATLAB, eseguire una funzione che ho scritto per eseguire la FFT e restituire il vettore risultante a una nuova tabella dati con i bin di frequenza correttamente etichettati (dicendo la mia funzione MATLAB quale è la mia frequenza di campionamento).
Per automatizzare questa analisi in futuro per nuove misurazioni, ho trasformato questa analisi in una nuova applicazione JMP, che può quindi essere impacchettata come un componente aggiuntivo e aggiunta al mio menu JMP. È una semplice finestra di dialogo che richiede la colonna, che ha i dati di ampiezza.

Quando premo OK, verrà eseguito il JSL che eseguirà il round-trip dei miei dati su MATLAB, eseguirà la FFT e restituirà i risultati dell'analisi su una tabella di dati. Il codice effettivamente richiesto per eseguire lo script MATLAB è abbastanza semplice. Nella riga 26, invio la variabile yvec , che corrisponde al ruolo di risposta che l'utente ha selezionato nell'applicazione nello spazio variabile MATLAB. Quindi, invio il codice MATLAB necessario per eseguire la mia funzione FFT. Nel mio caso, so che tutti i miei IR sono stati campionati a 44.1 kHz, quindi ho inserito l'hard-coded nella lista di input per la mia funzione calcFFT. Se la frequenza di campionamento era variabile, potrei aggiungere un campo di immissione del testo alla mia applicazione e quindi passare la selezione alla mia chiamata di funzione.

La mia funzione restituisce due vettori che mi interessano, il fontsignal e il freqArray. Posso quindi inserire queste due variabili nello spazio variabile JMP con MATLAB Get (); funzione e creare una tabella dai risultati.
Dopo aver ottenuto i miei risultati, posso utilizzare Graph Builder per generare il mio grafico di risposta in frequenza:

Mi sono concentrato solo sulla risposta in frequenza da 20 Hz a 400 Hz in modo da poter vedere il comportamento di ottimizzazione delle porte (che appare come un picco sul grafico). È un po 'più alto di quanto mi aspettassi in base al mio modello, quindi potrei aver bisogno di aggiungere un po' di bass-boost al canale a bassa frequenza nel MiniDSP per avere la risposta in frequenza di cui ho bisogno nella mia stanza.
Ho appena mostrato un esempio di dove possiamo usare JMP e MATLAB insieme per estendere le funzionalità di JMP. Nel white paper, passiamo attraverso diversi altri esempi, incluso l'utilizzo di JMP per impostare un progetto di esperimenti utilizzando Custom Designer, eseguire esperimenti di simulazione in MATLAB e quindi restituire i risultati a JMP per analisi, analisi fattoriale e valutazione dell'importanza variabile.
Hai già utilizzato l'interfaccia JMP in MATLAB in JMP 11? Se lo hai, mi piacerebbe sentire la tua storia!
Emmanuel ha scritto:
Ci sono alcuni errori negli script, ho visto anche uno dei video e alcuni errori di battitura.
Il primo esempio ha un errore di nome Colum, nel registro. quindi devo eliminare quella parte per:
MATLAB Init ();
MATLAB Submit ("m = magic (3)");
magicMat = MATLAB get (m);
mostra (magicMat);
dt = as table (magicMAt);
MATLAB Term ();
Quindi potrebbe funzionare
La FFT è la parte che mi interessa, dovrebbe iniziare con MATLAB Init ();
Attualmente ho un errore nel registro.
"Funzione non definita 'calcFFT_FR12' per gli argomenti di input di tipo 'double'."
Potete per favore inviarmi anche il campione di dati di 25.000?
Quindi posso recensirlo
Grazie in anticipo
Inoltre come aggiungere il percorso allo script JMP in modo che tutte le funzioni MATLAB possano essere richiamate invece di cambiare directory ogni volta?
È strano che io abbia digitato
MATLAB Submit ("cd '\\ las-cifs01 \ myfilename"); // invece della riga cd REPLACE
// MATLAB Submit ("cd 'REPLACE'");
Cerca una cartella in cd '\\ las-cifs01 \ myfilename \ REPLACE
Non ho specificato che stiamo andando nella cartella REPLACE