Come si esegue l'analisi spettrale in JMP?Ho una serie di dati di oltre 800.000 punti che vorrei esaminare nel dominio della frequenza.Ho provato a eseguire una "analisi delle serie temporali" per creare dati sulla densità spettrale, ma JMP si blocca.L'ho lasciato in sospeso per diversi minuti, e poi la mia scheda grafica è morta...una bella coincidenza!
Il file di dati è allegato se vuoi provarlo, la prima colonna è il timestamp in secondi, la seconda colonna sono i dati.Per favore fatemi sapere se c'è un modo per farlo.
Grazie,
Giasone
Re: Come fare l'analisi spettrale?Ciao, Daniel,
Approvo la richiesta di Fiona. È possibile condividere il codice?
Grazie
Re: Come fare l'analisi spettrale?Potresti condividere il tuo script e lasciarmi provare a eseguire FFT nei miei dati?
Re: Come fare l'analisi spettrale?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Eccellente! Grazie per le informazioni su quei dati. Sono contento che la mia analisi corrisponda a ciò che ti aspetti. JMP è in realtà molto adatto per l'analisi statistica dei dati nel dominio della frequenza, ma alcuni altri strumenti (come MATLAB) sono adatti per fare cose specializzate come eseguire FFT su array di dimensioni arbitrarie, progetti di filtri, convoluzione ecc. Questo è il motivo per cui l'estensibilità in JMP è eccezionale: essere in grado di raggiungere SAS, MATLAB e R offre la possibilità di sfruttare questi strumenti quando necessario e quindi riportare i dati in JMP per la visualizzazione e l'analisi.
Ho eseguito i tuoi dati tramite un'applicazione FFT che ho scritto tutto in JSL: funziona proprio come una piattaforma JMP:

Quello che fa quando fai clic su OK è connettersi a MATLAB ed eseguire un codice preesistente che converte i dati nel dominio del tempo nel dominio della frequenza e quindi restituisce i dati a una nuova tabella di dati JMP per ulteriori analisi e grafici. Se avessi bisogno di eseguire un'ulteriore elaborazione del segnale in MATLAB, ad esempio eseguire un filtro passa-banda, potrei farlo anche in MATLAB prima di restituire i dati a JMP.
Ma poi, quando i dati sono di nuovo in JMP, posso analizzare o visualizzare come voglio. Ad esempio, ho utilizzato un filtro dati locale per concentrarmi solo sulla parte del segnale in cui i componenti della sorgente CA rettificati sarebbero > 3 Hz.

E poi usa Righe> Selezione riga> Seleziona dominante per concentrarti sui punti sul fronte di Pareto. JMP ha identificato 33 raccoglitori FFT, che posso creare sottoinsiemi utilizzando Tabelle > Sottoinsieme. Se controllo "collegato alla tabella di dati originale", il sottoinsieme e l'intero set di dati verranno collegati. Ho inserito un indicatore + e ho colorato questi punti in rosso nel sottoinsieme, e sono stati colorati di nuovo nella tabella dei dati originale.

Il modo migliore per analizzare questi dati dipenderà dalla domanda a cui stai tentando di rispondere, ma una volta che i dati trasformati sono tornati in JMP, puoi esplorarli come preferisci. Anche il suggerimento di @Xan di utilizzare la funzione FFT in JSL è ottimo. Ho semplicemente scelto di utilizzare MATLAB perché ho già una libreria di codice che esegue una varietà di operazioni di elaborazione del segnale in MATLAB e spesso ho anche bisogno di filtrare i dati utilizzando filtri IIR o FIR come parte della fase di analisi, un'attività per cui MATLAB è adatto (sia per la progettazione dei filtri che per l'esecuzione della fase di filtraggio).
Re: Come fare l'analisi spettrale?Grazie per averlo guardato!Sì, ho trovato qualche altro software (Labchart, di AD Instruments) per eseguire la FFT e sono d'accordo che ci sono alcuni picchi interessanti.I 120 Hz e 240 Hz sono indicativi di rumore proveniente da una sorgente CA rettificata.Parte dell'energia < 1 Hz si risolve in picchi con un multiplo coerente, possibilmente correlato alla frequenza di rotazione dei componenti meccanici nel sistema.
Principalmente ho postato per vedere se c'erano alcune funzionalità in JMP che non avevo utilizzato correttamente, ma sembra che l'analisi statistica del dominio della frequenza non sia davvero la loro cosa.
Re: Come fare l'analisi spettrale?Ho eseguito questi dati attraverso uno script di analisi FFT che ho scritto in MATLAB utilizzando l'interfaccia JMP per MATLAB in JMP 11. Sembra che il tuo SR sia 1000Hz, quindi questo ti dà una risoluzione fino alla tua frequenza Nyquist. di 500 Hz. Molta energia LF verso DC, ma sembrano esserci alcuni picchi interessanti tra 40 Hz e 300 Hz. È questo il tipo di risultato che potresti aspettarti per questi dati?
Tracciato in Graph Builder con i risultati restituiti da MATLAB:

Re: Come fare l'analisi spettrale?Il comando Spectral Density in Time Series sta apparentemente usando un algoritmo lento. Esiste una funzione JSL chiamata "FFT" che utilizzerà un algoritmo veloce, ma solo se il numero di punti è un bel numero tondo (ha molti piccoli fattori). Ad esempio, se tronco i tuoi dati esattamente a 800.000 righe, il seguente JSL restituisce immediatamente:
data = Column( “y” ) << ottieni valori; Mostra( N Righe( dati ) );
f = FFT( {dati} ); Mostra( N Righe( f[1] ) );
Tabella dati corrente() << Nuova colonna("freq", Imposta valori( f[1] ));