Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 con facilidad a todas las señales del área de trabajo de MATLAB®.

  • Rellenar datos faltantes (desde R2024a); suavizar, filtrar, remuestrear, eliminar tendencias, eliminar ruido, extraer y editar señales sin salir de la app.

  • Añadir y aplicar funciones de preprocesamiento personalizadas.

  • Reproducir señales de audio. (desde R2024a)

  • 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

Cargue una señal de voz muestreada a Fs=7418Hz. El archivo contiene una grabación de una voz femenina diciendo la palabra "MATLAB®".

load mtlb

Para simular una situación en la que falta el 70% de los datos de audio, asigne aleatoriamente valores NaN a la señal.

rng(2024) 
numToReplace = round(length(mtlb) * 0.70);
missing = randperm(length(mtlb),numToReplace);

mtlbMissing = mtlb;
mtlbMissing(missing) = NaN;

Abra Signal Analyzer y arrastre las variables mtlb y mtlbMissing desde el panel Workspace Browser hasta la tabla Filter Signals. Seleccione las dos señales. 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. Haga clic en Display Grid para crear dos visualizaciones, una al lado de la otra. Represente mtlb en la visualización de la izquierda y mtlbMissing en la visualización de la derecha. Para oír la señal de audio mtlb, seleccione y haga clic en Play en la sección Playback de la barra de herramientas en la pestaña Display. Para repetir la señal, seleccione Play in Loop antes de reproducirla.

Signal Analyzer app, showing the Display strip, the "mtlb" signal is selected and played in loop.

Seleccione la señal con datos faltantes y haga clic en Preprocess en la pestaña Analyzer para acceder al modo de preprocesamiento. A continuación, seleccione Fill Missing en la lista de opciones de preprocesamiento. Utilice el panel Function Parameters para ajustar los parámetros Fill Missing. Seleccione Autoregressive model y haga clic en Apply para rellenar la señal faltante. Haga clic en Accept All para guardar los resultados de preprocesamiento y salir del modo. Para más información sobre funciones de relleno, consulte fillmissing y fillgaps.

Signal Analyzer app, showing the Search bar in the Preprocess strip. Clicking the Search bar shows a variety of preprocessing options. The "Fill Missing" option is selected.

Ahora puede reproducir la señal rellenada mediante el botón Play. Para ver el efecto de la falta de datos de relleno en el espectrograma, haga clic en Time-Frequency en la pestaña Display. En la pestaña Spectrogram, especifique una resolución de tiempo de 20 ms y un solapamiento de 80% entre los segmentos contiguos. Establezca Power Limits en –50 dB y –10 dB. Haga clic en la visualización de la izquierda y repita los pasos.

Signal Analyzer app, showing the Spectrogram strip, the "mtlb" and "mtlbMissing" signals with their respective spectrograms.

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.

Signal Analyzer app, showing the Display strips, from which the Time and Spectrum views are selected. The app also displays the signal "x" with channels 1 and 2, in time domain and frequency domain.

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.

Signal Analyzer app, showing the Spectrum strip, from which Leakage is selected. The app also displays the signal "x" with channels 1 and 2, in time domain and frequency domain.

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.

Signal Analyzer app, showing the Display strips, from which the Data Cursor toggle button is selected. The app also displays the signal "x" with channels 1 and 2. Two vertical data cursors are shown in the time-domain and frequency-domain plots.

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.

Signal Analyzer app, showing the Display strip, from which the Spectrum view is selected. The app also shows the signal "y" in frequency domain in a 2-by-2 grid of displays. The four displays show the same spectrum for "y".

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.

Signal Analyzer app, showing the Display strip, from which the Spectrum view is selected. The app also shows the signal "y" in frequency domain in a 2-by-2 grid of displays. The four displays now show different spectra for "y", each of them modified with its own spectrum settings.

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