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 Labeler

Etiquetar atributos de señal, regiones y puntos de interés

Descripción

La app Signal Labeler es una herramienta interactiva que le permite etiquetar señales para realizar análisis o para utilizarla en aplicaciones de machine learning y deep learning. Utilizando Signal Labeler, puede:

  • Etiquetar atributos de señal, regiones y puntos de interés

  • Etiquetar las regiones de tiempo-frecuencia de interés del espectrograma (desde R2025a)

  • Utilizar etiquetas lógicas, categóricas, numéricas o con valores de cadena

  • Etiquetar de forma automática picos de señal o regiones de señales acotadas

  • Aplicar funciones de etiquetado personalizadas

  • Importar, etiquetar y reproducir señales de audio

  • Utilizar vistas de frecuencia y tiempo-frecuencia para ayudar al etiquetado en el dominio de tiempo

  • Utilizar la vista temporal para facilitar el etiquetado en el dominio de tiempo-frecuencia (desde R2025a)

  • Crear conjuntos de datos que incluyan señales, espectrogramas y máscaras de etiquetas (desde R2025a)

  • Agregar, editar y eliminar etiquetas o subetiquetas

  • Mostrar los subconjuntos de señales y etiquetas seleccionados

Signal Labeler guarda los datos como objetos labeledSignalSet. También puede exportar objetos labeledSignalSet a MATLAB® o Diagnostic Feature Designer (Predictive Maintenance Toolbox). Puede crear conjuntos de datos como archivos para entrenar una red o un clasificador, o analizar datos y elaborar informes estadísticos.

Para obtener más información, consulte Use Signal Labeler App.

  • Necesita una licencia de Audio Toolbox™ para importar, reproducir y etiquetar señales de audio.

  • La reproducción de audio no es compatible con MATLAB Online.

  • Necesita una licencia de Predictive Maintenance Toolbox™ para exportar conjuntos de etiquetas de señal a Diagnostic Feature Designer.

  • Signal Labeler ya no es compatible con el modo de extracción de características, que ahora está disponible como app. Para extraer características de señales, abra Signal Feature Extractor desde la barra de herramientas o la ventana de comandos de MATLAB.

Signal Labeler app

Abrir la aplicación Signal Labeler

  • 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 signalLabeler.

Ejemplos

expandir todo

Este ejemplo muestra cómo realizar un seguimiento del progreso del etiquetado y evaluar la calidad de las etiquetas con el panel. En este modo, se puede determinar rápidamente cuántos miembros están etiquetados e inspeccionar las duraciones y distribuciones de valores de etiqueta en un conjunto de datos. Este paso facilita el proceso de obtención de conjuntos de datos completos y precisos para machine learning.

Descargar y preparar los datos

Utilice la función QTdownload para descargar señales de un electrocardiograma (ECG) de la base de datos QT de acceso público [1] [2] en un nuevo directorio temporal folder. El código de esta función se encuentra al final del ejemplo.

folder = QTdownload;

Cada archivo contiene una señal de ECG ecgSignal, una tabla de etiquetas de región signalRegionLabels y la variable de tasa de muestreo Fs. Todas las señales tienen una tasa de muestreo de 250 Hz. Las etiquetas de las regiones corresponden a tres morfologías de latido:

  • Onda P

  • Complejo QRS

  • Onda T

Cree un almacén de datos de señales que apunte a folder. Especifique el nombre de la variable de la señal ecgSignal y la variable de tasa de muestreo Fs.

sds = signalDatastore(folder,SignalVariableNames="ecgSignal", ...
    SampleRateVariableName="Fs");

Cree un subconjunto del almacén de datos que contenga los veinte primeros archivos. Utilice este subconjunto como la fuente de un objeto labeledSignalSet.

subsds = subset(sds,1:20);
lss = labeledSignalSet(subsds);

Etiquetar regiones de interés

Abra la app Signal Labeler e importe el conjunto de señales etiquetadas del área de trabajo. Represente la primera señal del conjunto de datos. En la pestaña Display, seleccione el panoramizador y haga zoom sobre una región más pequeña de la señal para visualizarla mejor.

Signal Labeler app showing an ECG signal with a panner display

En la pestaña Labeler, defina una etiqueta categórica de la región de interés (ROI) con las categorías P, QRS y T. Nombre la etiqueta BeatMorphologies.

Cree una función de etiquetado personalizada labelECGregions para localizar y etiquetar las tres regiones de interés diferentes. El código de la función personalizada aparece más adelante en el ejemplo. Puede guardar la función en la carpeta actual, en la ruta de MATLAB, o añadirla a la app seleccionando Add Custom Function en la galería Automate Value. Para obtener más información, consulte Custom Labeling Functions.

Seleccione BeatMorphologies en el navegador Label Definitions y elija la función labelECGregions de la galería Automate Value. Seleccione Auto-Label y, luego, Auto-Label and Inspect Plotted. Haga clic en Run. En la pestaña Display, amplíe una región de la señal etiquetada y utilice el panoramizador para navegar en el tiempo. Si el etiquetado es satisfactorio, haga clic en Save Labels para aceptar las etiquetas y cerrar la pestaña Autolabel. Puede ver las etiquetas y sus valores de ubicación en el explorador Labeled Signal Set Members.

Labeled signal with "QRS" and "T" labels

Visualizar el progreso del etiquetado y las estadísticas

Seleccione el panel en la barra de herramientas de la pestaña Labeler. La barra de progreso muestra que el 5% de los miembros están etiquetados con al menos una etiqueta de la ROI. Esto corresponde a 1/20 miembros del conjunto de datos. La gráfica circular de distribución de etiquetas muestra el número de instancias de cada categoría para la definición de etiqueta seleccionada.

Signal Labeler app showing the progress and label distribution of the Beat Morphologies dashboard.

Cierre el panel y siga etiquetando. Seleccione Auto-Label y, luego, Auto-Label All Signals para etiquetar las cuatro señales siguientes de la lista. Marque la casilla situada junto a los nombres de las señales que desea etiquetar y, luego, haga clic en OK.

Seleccione de nuevo el panel. La barra de progreso muestra ahora que el 25% de los miembros están etiquetados. Compruebe que la distribución de cada categoría (P, QRS o T) es la esperada. La gráfica circular Label Distribution muestra que cada categoría representa aproximadamente un tercio de todas las instancias de etiquetas. Seleccione la gráfica de histogramas Time Distribution de la galería Plots para ver la duración media de las ondas P y T y los complejos QRS, incluidos los valores atípicos. Observe que las ondas T duran más que las ondas P y que los complejos QRS.

Muestre la gráfica Member Count para visualizar mejor la distribución de etiquetas entre los miembros y el número de instancias. La mayoría de los miembros del conjunto de datos tienen entre 0 y 500 instancias de las regiones P, QRS y T.

Signal Labeler app showing progress, label distribution, time distribution, and member and region count of the Beat Morphologies dashboard.

Haga clic en la gráfica de la barra de progreso y ajuste Threshold en la barra de herramientas para contar solo los miembros con al menos 5000 etiquetas. Ahora solo se incluyen en el recuento tres de los cinco miembros etiquetados. Ajuste el umbral de recuento para diferenciar mejor entre miembros etiquetados y no etiquetados, en función de sus requisitos de etiquetado.

Progress tab of the dashboard

Función labelECGregions

La función labelECGregions utiliza una red de deep learning preentrenada para identificar morfologías de latido P, QRS y T en señales de ECG.

function [labelVals,labelLocs] = labelECGregions(x,t,parentLabelVal,parentLabelLoc,varargin)

labelVals = cell(2,1);
labelLocs = cell(2,1);

if nargin < 5
    Fs = 250;
else
    Fs = varargin{1};
end

% Download the pretrained network

netfil = matlab.internal.examples.downloadSupportFile("SPT", ...
    "data/QTDatabaseECGSegmentationNetworks.zip"); %#ok<*UNRCH>
unzip(netfil,fullfile(tempdir,"ECGnet"))
load(fullfile(tempdir,"ECGnet","trainedNetworks.mat"))
    
    for kj = 1:size(x,2)
    
        sig = x(:,kj)';
    
        predTest = classify(rawNet,sig,MiniBatchSize=50);
        
        msk = signalMask(predTest);
        msk.SpecifySelectedCategories = true;
        msk.SelectedCategories = find(msk.Categories ~= "n/a");
        
        labels = roimask(msk);
        labelVals{kj} = labels.Value;
        labelLocs{kj} = labels.ROILimits/Fs;

    end

labelVals = vertcat(labelVals{:});
labelLocs = cell2mat(labelLocs);

end

Función QTdownload

Puede descargar los archivos de datos de https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData.zip o utilizar la función unzip para crear una carpeta en un directorio temporal con 210 archivos MAT.

function folder = QTdownload

localfile = matlab.internal.examples.downloadSupportFile("SPT", ...
    "data/QTDatabaseECGData1.zip");
unzip(localfile,tempdir)
folder = fullfile(tempdir,"QTDataset");

end

Referencias

[1] Goldberger, Ary L., Luis A. N. Amaral, Leon Glass, Jeffery M. Hausdorff, Plamen Ch. Ivanov, Roger G. Mark, Joseph E. Mietus, George B. Moody, Chung-Kang Peng y H. Eugene Stanley. "PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research Resource for Complex Physiologic Signals." Circulation. Vol. 101, núm. 23, 2000, págs. e215–e220. [Circulation Electronic Pages; http://circ.ahajournals.org/content/101/23/e215.full].

[2] Laguna, Pablo, Roger G. Mark, Ary L. Goldberger y George B. Moody. "A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG." Computers in Cardiology. Vol. 24, 1997, págs. 673–676.

Ejemplos relacionados

Uso programático

expandir todo

signalLabeler abre la app Signal Labeler.

Historial de versiones

Introducido en R2019a

expandir todo