Comment effectuer une analyse spectrale dans JMP ?J'ai une série de données de plus de 800 000 points que j'aimerais examiner dans le domaine fréquentiel.J'ai essayé de faire une "analyse de séries chronologiques" pour créer des données de densité spectrale, mais JMP se bloque.Je l'ai laissé pendre pendant plusieurs minutes, puis ma carte graphique est morte...tout un hasard !
Le fichier de données est joint si vous voulez l'essayer, la première colonne est l'horodatage en secondes, la deuxième colonne est les données.S'il vous plaît laissez-moi savoir s'il existe un moyen de le faire.
Merci,
Jason
Re : Comment faire une analyse spectrale ?Salut Daniel,
J'appuie la demande de Fiona. Vous est-il possible de partager le code ?
merci
Re : Comment faire une analyse spectrale ?Pourriez-vous partager votre script et me laisser essayer d'exécuter FFT dans mes données ?
Re : Comment faire une analyse spectrale ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Excellent! Merci pour l'info sur ces données. Je suis content que mon analyse corresponde à ce que vous attendez. JMP est en fait très bien adapté à l'analyse statistique des données du domaine fréquentiel, mais certains autres outils (comme MATLAB) sont bien adaptés pour faire des choses spécialisées comme effectuer des FFT sur des tableaux de taille arbitraire, des conceptions de filtres, des convolutions, etc.
J'ai exécuté vos données via une application FFT que j'ai entièrement écrite en JSL - cela fonctionne comme une plate-forme JMP :

Lorsque vous cliquez sur OK, il se connecte à MATLAB et exécute un code préexistant qui convertit les données du domaine temporel dans le domaine fréquentiel, puis renvoie les données dans une nouvelle table de données JMP pour une analyse et un graphique plus approfondis. Si j'avais besoin d'effectuer un traitement supplémentaire du signal dans MATLAB - par exemple, exécuter un filtre passe-bande - je pourrais également le faire dans MATLAB avant de renvoyer les données à JMP.
Mais ensuite, lorsque les données sont de retour dans JMP, je peux analyser ou visualiser comme je veux. Par exemple, j'ai utilisé un filtre de données local pour me concentrer uniquement sur la partie du signal où les composants de source CA redressés seraient > 3 Hz.

Et puis utilisez Lignes> Sélection de lignes> Sélectionnez Dominant pour vous concentrer sur les points du front de Pareto. JMP a identifié 33 bacs FFT, que je peux sous-ensemble en utilisant Tables > Sous-ensemble. Si je coche la case "lié à la table de données d'origine", le sous-ensemble et l'ensemble de données complet seront liés. J'ai mis un marqueur + et coloré ces points en rouge dans le sous-ensemble, et ils sont recolorés dans le tableau de données d'origine.

La meilleure façon d'analyser ces données dépendra de la question à laquelle vous essayez de répondre, mais une fois que les données transformées sont de retour dans JMP, vous pouvez les explorer comme vous le souhaitez. La suggestion de @Xan d'utiliser la fonction FFT dans JSL est également excellente. J'ai juste choisi d'utiliser MATLAB parce que j'ai déjà une bibliothèque de code qui fait une variété de choses de traitement du signal dans MATLAB, et j'ai aussi souvent besoin de filtrer les données à l'aide de filtres IIR ou FIR dans le cadre de l'étape d'analyse, une tâche pour laquelle MATLAB est bien adapté (à la fois pour la conception des filtres et pour l'exécution de l'étape de filtrage).
Re : Comment faire une analyse spectrale ?Merci de l'avoir regardé !Oui, j'ai trouvé un autre logiciel (Labchart, par AD Instruments) pour faire la FFT, et je suis d'accord qu'il y a quelques pics intéressants.Les 120 Hz et 240 Hz indiquent le bruit provenant d'une source CA redressée.Une partie de l'énergie < 1 Hz se résout en pics avec un multiple cohérent, éventuellement en corrélation avec la fréquence de rotation des composants mécaniques du système.
La plupart du temps, j'ai posté pour voir s'il y avait des fonctionnalités dans JMP que je n'avais pas utilisées correctement, mais il semble que l'analyse statistique du domaine fréquentiel ne soit vraiment pas leur truc.
Re : Comment faire une analyse spectrale ?Exécutez ces données via un script d'analyse FFT que j'ai écrit dans MATLAB en utilisant l'interface JMP vers MATLAB dans JMP 11. On dirait que votre SR est de 1000 Hz, cela vous donne donc une résolution jusqu'à votre fréquence Nyquist. de 500Hz. Beaucoup d'énergie LF vers DC, mais il semble y avoir des pics intéressants entre 40 Hz et 300 Hz. Est-ce le type de résultat auquel vous pourriez vous attendre pour ces données ?
Tracé dans Graph Builder avec les résultats renvoyés par MATLAB :

Re : Comment faire une analyse spectrale ?La commande Spectral Density dans Time Series utilise apparemment un algorithme lent. Il existe une fonction JSL appelée "FFT" qui utilisera un algorithme rapide, mais seulement si le nombre de points est un joli nombre rond (a beaucoup de petits facteurs). Par exemple, si je tronque vos données à exactement 800 000 lignes, le JSL suivant renvoie immédiatement :
data = Column( "y" ) << obtenir les valeurs ; Show( N Rows( data ) );
f = FFT( {données} ); Afficher( N lignes( f[1] ) );
Table de données actuelle() << Nouvelle colonne ("freq", Set Values( f[1] ));