Main Content

Signal Analyzer

Visualizar y comparar múltiples señales y espectros

Descripción

La app Signal Analyzer es una herramienta interactiva que sirve para visualizar, preprocesar, medir, analizar y comparar señales en los dominios de tiempo, frecuencia y tiempo-frecuencia. Al utilizar esta app, puede:

  • Acceder fácilmente a todas las señales del área de trabajo de MATLAB®

  • Suavizar, filtrar, remuestrear, eliminar tendencias, eliminar ruido, duplicar, extraer, modificar el nombre y editar señales sin salir de la app

  • Añadir y aplicar funciones de preprocesamiento personalizadas

  • Visualizar y comparar simultáneamente múltiples representaciones de señales en forma de onda, espectro, persistencia, espectrograma y escalograma

  • Medir datos y estadísticas de señal

La app Signal Analyzer permite trabajar con muchas señales de distinta duración al mismo tiempo y en la misma vista.

Para obtener más información, consulte Cómo utilizar la app Signal Analyzer.

  • Para utilizar la vista de escalograma y aplicar la eliminación de ruido de wavelet a las señales se necesita una licencia de Wavelet Toolbox™.

Signal Analyzer app

Abrir la aplicación Signal Analyzer

  • Barra de herramientas de MATLAB: En la pestaña Apps, en Signal Processing and Communications, haga clic en el icono de la app.

  • Línea de comandos de MATLAB: Introduzca la función signalAnalyzer.

Ejemplos

expandir todo

Se puede ajustar el manchado espectral de la ventana de análisis para resolver sinusoides en Signal Analyzer.

Genere una señal de dos canales muestreada a 100 Hz durante 2 segundos.

  1. El primer canal consta de un tono de 20 Hz y otro de 21 Hz. Ambos tonos tienen amplitud unitaria.

  2. El segundo canal también tiene dos tonos. Un tono tiene amplitud unitaria y una frecuencia de 20 Hz. El otro tono tiene una amplitud de 1/100 y una frecuencia de 30 Hz.

fs = 100;

t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t)+[1 1/100].*sin(2*pi*[21 30].*t);

Inserte la señal en ruido blanco. Especifique una relación señal-ruido de 40 dB.

x = x + randn(size(x)).*std(x)/db2mag(40);

Abra Signal Analyzer y represente la señal. Con la señal seleccionada en la tabla Signal, en la pestaña Analyzer, haga clic en Time Values y seleccione Sample Rate and Start Time. Especifique Sample Rate como fs Hz y Start Time como 0 s. En la pestaña Display, haga clic en Spectrum para añadir una gráfica espectral a la visualización.

Haga clic en la pestaña Spectrum. El control deslizante que controla el manchado espectral se encuentra en la posición media, lo que corresponde a un ancho de banda de la resolución de unos 1,28 Hz. Los dos tonos del primer canal no se resuelven. El tono de 30 Hz en el segundo canal es visible, a pesar de ser mucho más débil que el otro.

Aumente el manchado de modo que el ancho de banda de la resolución sea aproximadamente 0,83 Hz. El tono débil del segundo canal está claramente resuelto.

Mueva el control deslizante hasta el valor máximo. El ancho de banda de la resolución es aproximadamente 0,5 Hz. Los dos tonos del primer canal se resuelven. El tono débil del segundo canal queda enmascarado por los grandes lóbulos laterales de la ventana.

Haga clic en la pestaña Display. Utilice el zoom horizontal para ampliar el eje de frecuencia. Añada dos cursores a la pantalla y arrastre los cursores del dominio de frecuencia para estimar las frecuencias de los tonos.

Lea una grabación de audio de un cepillo de dientes electrónico en MATLAB®. La señal se muestrea a 48 kHz. El cepillo se enciende en aproximadamente 1,75 segundos y permanece encendido unos 2 segundos.

[y,fs] = audioread("toothbrush.m4a");

Abra Signal Analyzer y arrastre la señal del navegador del área de trabajo a la tabla Signal. Añada información de tiempo a la señal seleccionándola en la tabla Signal y haciendo clic en Time Values en la pestaña Analyzer. Seleccione Sample Rate and Start Time e introduzca fs en la tasa de muestreo.

En la pestaña Display, haga clic en Display Grid para crear una cuadrícula de pantallas de dos por dos. Seleccione cada pantalla, haga clic en Spectrum para añadir una vista del espectro y en Time para eliminar la vista de tiempo. Arrastre la señal a las cuatro pantallas.

Haga clic en la pestaña Spectrum para modificar la vista del espectro de cada pantalla.

  1. Haga clic en la pantalla superior izquierda para seleccionarla. Mueva el control deslizante de Leakage hasta obtener un valor de manchado de 32.

  2. Haga clic en la pantalla superior derecha para seleccionarla. En la sección Resolution Type, seleccione Window Length. En la sección Window Length, seleccione Specify y especifique una longitud de ventana de 1500 muestras. En la sección Window Options, elija una ventana Rectangular y especifique un porcentaje de solapamiento de 20.

  3. Haga clic en la pantalla inferior izquierda para seleccionarla. En la sección Resolution Type, seleccione Window Length. En la sección Window Length, seleccione Specify y especifique una longitud de ventana de 500 muestras. En la sección Window Options, elija una ventana Hamming y especifique un porcentaje de solapamiento de 50. En la sección NFFT, especifique 550 puntos de la transformada discreta de Fourier.

  4. Haga clic en la pantalla inferior derecha para seleccionarla. En la sección Resolution Type, seleccione Window Length. En la sección Window Length, seleccione Specify y especifique una longitud de ventana de 5000 muestras. En la sección Window Options, elija una ventana Chebyshev y especifique una atenuación de los lóbulos laterales de 50 dB y un porcentaje de solapamiento de 90.

Puede observar que algunas vistas muestran una mayor resolución, pero un mayor manchado, mientras que otras vistas tienen un menor manchado a costa de la resolución.

Ejemplos relacionados

Uso programático

expandir todo

signalAnalyzer abre la app Signal Analyzer.

signalAnalyzer(sig) abre la app Signal Analyzer e importa y representa la señal sig. Si la app ya está abierta, representa sig en la pantalla actual. Si sig ya se ha representado, pero ha cambiado, la llamada a la función actualiza la representación.

sig puede ser una variable del área de trabajo o una expresión de MATLAB. sig puede ser:

  • un vector o una matriz con señales independientes en cada columna;

  • un timetable con valores de tiempo especificados como duraciones;

  • Un objeto timeseries.

Para obtener más detalles, consulte Data Types Supported by Signal Analyzer.

Por defecto, la app representa la señal como una función del índice de la muestra. Si proporciona información de tiempo, o si la señal tiene información de tiempo inherente, la app representa la señal como una función de tiempo.

signalAnalyzer(sig1,...,sigN) importa N vectores o matrices de señal y los representa en la pantalla actual. La app no es compatible con la importación de señales con información de tiempo inherente y señales sin información de tiempo inherente en la misma llamada de función.

signalAnalyzer(___,'SampleRate',fs) especifica una tasa de muestreo, fs, como un escalar positivo expresado en Hz. La app utiliza la tasa de muestreo para representar una o más señales en función del tiempo, asumiendo un tiempo inicial de cero. Puede especificar una tasa de muestreo para señales sin información de tiempo inherente.

signalAnalyzer(___,'SampleTime',ts) especifica un tiempo de muestreo, ts, como un escalar positivo expresado en segundos. La app utiliza el tiempo de muestreo para representar una o más señales en función del tiempo, asumiendo un tiempo de inicio de cero. Puede especificar un tiempo de muestreo para señales sin información de tiempo inherente.

signalAnalyzer(___,'StartTime',st) especifica un tiempo de inicio de la señal, st, como un escalar expresado en segundos. Si no especifica una tasa de muestreo o un tiempo de muestreo, la app asume una tasa de muestreo de 1 Hz. Puede especificar un tiempo de inicio para señales sin información de tiempo inherente.

signalAnalyzer(___,'TimeValues',tv) especifica un vector, tv, con valores de tiempo correspondientes a los puntos de datos. tv puede ser un vector numérico real con valores expresados en segundos. tv también puede ser un arreglo de duration. Los valores de tv deben ser únicos y no pueden ser NaN, pero no es necesario que estén espaciados uniformemente. Todas las señales de entrada deben tener la misma longitud que tv. Puede especificar un vector de valores de tiempo para señales sin información de tiempo inherente.

El filtrado y la vista del escalograma no son compatibles con señales muestreadas de manera no uniforme.

Historial de versiones

Introducido en R2016a

expandir todo