¿Cómo realizo un análisis espectral en JMP?Tengo una serie de datos de más de 800k puntos que me gustaría ver en el dominio de la frecuencia.Intenté hacer un "Análisis de series de tiempo" para crear datos de densidad espectral, pero JMP simplemente se bloquea.Lo dejé colgado durante varios minutos y luego mi tarjeta gráfica murió...toda una coincidencia!
El archivo de datos se adjunta si desea probarlo, la primera columna es la marca de tiempo en segundos, la segunda columna son los datos.Por favor, hágame saber si hay una manera de hacer esto.
Gracias,
jason
Re: ¿Cómo hacer un análisis espectral?Hola Daniel,
Secundo la petición de Fiona. ¿Es posible que compartas el código?
gracias
Re: ¿Cómo hacer un análisis espectral?¿Podría compartir su secuencia de comandos y dejarme intentar ejecutar FFT en mis datos?
Re: ¿Cómo hacer un análisis espectral?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />¡Excelente! Gracias por la información sobre esos datos. Me alegro de que mi análisis coincida con lo que esperas. En realidad, JMP es muy adecuado para el análisis estadístico de los datos del dominio de la frecuencia, pero algunas otras herramientas (como MATLAB) son adecuadas para hacer cosas especializadas, como realizar FFT en arreglos de tamaños arbitrarios, diseños de filtros, convolución, etc. Esta es la razón por la que la extensibilidad en JMP es excelente: poder llegar a SAS, MATLAB y R permite aprovechar estas herramientas cuando sea necesario y luego devolver los datos a JMP para su visualización y análisis.
Ejecuté sus datos a través de una aplicación FFT que escribí todo en JSL; funciona como una plataforma JMP:

Lo que está haciendo cuando hace clic en Aceptar es conectarse a MATLAB y ejecutar un código preexistente que convierte los datos del dominio del tiempo al dominio de la frecuencia y luego devuelve los datos a una nueva tabla de datos JMP para un análisis y una representación gráfica más detallados. Si tuviera que hacer un procesamiento adicional de la señal en MATLAB, por ejemplo, ejecutar un filtro de paso de banda, también podría hacerlo en MATLAB antes de devolver los datos a JMP.
Pero luego, cuando los datos vuelven a estar en JMP, puedo analizarlos o visualizarlos como quiera. Por ejemplo, utilicé un filtro de datos local para centrarme solo en la parte de la señal donde los componentes de la fuente de CA rectificada serían > 3 Hz.

Y luego use Filas > Selección de fila > Seleccionar dominante para enfocarse en los puntos en el Frente de Pareto. JMP identificó 33 contenedores FFT, que puedo dividir en subconjuntos mediante Tablas > Subconjunto. Si marco "vinculado a la tabla de datos original", se vincularán el subconjunto y el conjunto de datos completo. Puse un marcador + y coloreé estos puntos en rojo en el subconjunto, y se vuelven a colorear en la tabla de datos original.

Según la pregunta que intente responder, se determinará la mejor manera de analizar estos datos, pero una vez que los datos transformados vuelvan a estar en JMP, puede explorarlos de la forma que desee. La sugerencia de @Xan de usar la función FFT en JSL también es excelente. Simplemente elijo usar MATLAB porque ya tengo una biblioteca de código que hace una variedad de cosas de procesamiento de señales en MATLAB, y también a menudo necesito filtrar datos usando filtros IIR o FIR como parte del paso de análisis, una tarea para la que MATLAB es adecuado (tanto para diseñar los filtros como para realizar el paso de filtrado).
Re: ¿Cómo hacer un análisis espectral?¡Gracias por mirarlo!Sí, encontré otro software (Labchart, de AD Instruments) para hacer la FFT y estoy de acuerdo en que hay algunos picos interesantes.Los 120 Hz y 240 Hz son indicativos de ruido de una fuente de CA rectificada.Parte de la energía < 1 Hz se resuelve en picos con un múltiplo constante, posiblemente en correlación con la frecuencia de rotación de los componentes mecánicos del sistema.
Principalmente publiqué para ver si había alguna funcionalidad en JMP que no había estado usando correctamente, pero parece que el análisis estadístico de dominio de frecuencia realmente no es lo suyo.
Re: ¿Cómo hacer un análisis espectral?Ejecuté estos datos a través de un script de análisis FFT que escribí en MATLAB utilizando la interfaz JMP para MATLAB en JMP 11. Parece que su SR es de 1000 Hz, por lo que esto le da una resolución de hasta su frecuencia de Nyquist. de 500 Hz. Mucha energía LF hacia DC, pero parece haber algunos picos interesantes entre 40 Hz y 300 Hz. ¿Es este el tipo de resultado que podría esperar para estos datos?
Trazado en Graph Builder con los resultados devueltos por MATLAB:

Re: ¿Cómo hacer un análisis espectral?El comando Spectral Density en Time Series aparentemente usa un algoritmo lento. Hay una función JSL llamada "FFT" que usará un algoritmo rápido, pero solo si el número de puntos es un buen número redondo (tiene muchos factores pequeños). Por ejemplo, si corto sus datos a exactamente 800 000 filas, el siguiente JSL regresa inmediatamente:
data = Column( “y” ) << obtener valores; Mostrar (N filas (datos));
f = FFT ({datos}); Mostrar ( N Filas ( f [1] ) );
Tabla de datos actuales () << Nueva columna ("frecuencia", Establecer valores (f [1]));