Main Content

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.

Limpiar datos confusos y localizar extremos usando las tareas de Live Editor

Puede preprocesar datos de forma interactiva mediante secuencias de tareas de Live Editor, visualizando los datos en cada paso. Este ejemplo utiliza cinco tareas para limpiar datos ruidosos con valores que faltan y valores atípicos para identificar los mínimos y los máximos locales. Para obtener más información sobre las tareas de Live Editor, consulte Add Interactive Tasks to a Live Script.

En primer lugar, cree y represente un vector de datos confusos, que contiene cuatro valores de tipo NaN y cinco valores atípicos.

x = 1:100;
data = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100);
data(20:20:80) = NaN;
data(10:20:90) = [-50 40 30 -45 35];

Para representar los datos confusos, abra la tarea Create Plot. Empiece escribiendo la palabra clave plot en un bloque de código y, después, haga clic en Create Plot cuando aparezca en el menú. Seleccione el tipo de gráfica y los datos de entrada para representar los datos.

Para ver el código que genera esta tarea, amplíe la vista de la tarea haciendo clic en en la parte inferior del área de parámetros de la tarea.

Live Task
% Create plot of x and data
h = plot(x,data,"DisplayName","data");

% Add xlabel, ylabel, title, and legend
xlabel("x")
ylabel("data")
title("x vs. data")
legend

Rellenar los datos que faltan

Para reemplazar los valores NaN de los datos y visualizar los resultados, abra la tarea Clean Missing Data. Empiece escribiendo la palabra clave missing en un bloque de código y, después, haga clic en Clean Missing Data cuando aparezca en el menú. Seleccione los datos de entrada y el método de limpieza para representar los datos rellenados automáticamente.

Para ver el código que genera esta tarea, amplíe la vista de la tarea haciendo clic en en la parte inferior del área de parámetros de la tarea.

Live Task
% Fill missing data
[cleanedData,missingIndices] = fillmissing(data,"linear");

% Display results
clf
plot(cleanedData,"Color",[0 114 189]/255,"LineWidth",1.5,...
    "DisplayName","Cleaned data")
hold on

% Plot filled missing entries
plot(find(missingIndices),cleanedData(missingIndices),".","MarkerSize",12,...
    "Color",[217 83 25]/255,"DisplayName","Filled missing entries")
title("Number of filled missing entries: " + nnz(missingIndices))

hold off
legend

clear missingIndices

Rellenar valores atípicos

Ahora puede eliminar los valores atípicos de los datos limpiados de la tarea anterior mediante la tarea Clean Outlier Data. Escriba la palabra clave outliers en un nuevo bloque de código y haga clic en Clean Outlier Data para abrir la tarea. Seleccione cleanedData como datos de entrada. Puede personalizar los métodos de limpieza y detección de valores atípicos, y ajustar el umbral para encontrar más o menos valores atípicos.

Para ver el código que genera esta tarea, amplíe la vista de la tarea haciendo clic en en la parte inferior del área de parámetros de la tarea.

Live Task
% Fill outliers
[cleanedData2,outlierIndices,thresholdLow,thresholdHigh] = ...
    filloutliers(cleanedData,"linear");

% Display results
clf
plot(cleanedData,"Color",[77 190 238]/255,"DisplayName","Input data")
hold on
plot(cleanedData2,"Color",[0 114 189]/255,"LineWidth",1.5,...
    "DisplayName","Cleaned data")

% Plot outliers
plot(find(outlierIndices),cleanedData(outlierIndices),"x",...
    "Color",[64 64 64]/255,"DisplayName","Outliers")
title("Number of outliers cleaned: " + nnz(outlierIndices))

% Plot filled outliers
plot(find(outlierIndices),cleanedData2(outlierIndices),".","MarkerSize",12,...
    "Color",[217 83 25]/255,"DisplayName","Filled outliers")

% Plot outlier thresholds
plot([xlim missing xlim],[thresholdLow*[1 1] NaN thresholdHigh*[1 1]],...
    "Color",[145 145 145]/255,"DisplayName","Outlier thresholds")

hold off
legend

clear outlierIndices thresholdLow thresholdHigh

Suavizar datos

Después, suavice los datos limpiados de la tarea anterior mediante la tarea Smooth Data. Escriba la palabra clave smooth y haga clic en la tarea cuando aparezca. Seleccione cleanedData2, el resultado de la tarea anterior, como datos de entrada. Seleccione un método de suavizado y ajuste el factor de suavizado para un mayor o menor suavizado.

Para ver el código que genera esta tarea, amplíe la vista de la tarea haciendo clic en en la parte inferior del área de parámetros de la tarea.

Live Task
% Smooth input data
smoothedData = smoothdata(cleanedData2,"gaussian","SmoothingFactor",0.4);

% Display results
clf
plot(cleanedData2,"Color",[77 190 238]/255,"DisplayName","Input data")
hold on
plot(smoothedData,"Color",[0 114 189]/255,"LineWidth",1.5,...
    "DisplayName","Smoothed data")
hold off
legend

Localizar extremos

Por último, empiece a escribir la palabra clave extrema y haga clic en Find Local Extrema. Use smoothedData como datos de entrada y cambie el tipo de extremo para encontrar el máximo y el mínimo local de los datos limpios y suavizados. Puede ajustar los parámetros de extremos locales para encontrar más o menos máximos y mínimos.

Para ver el código que genera esta tarea, amplíe la vista de la tarea haciendo clic en en la parte inferior del área de parámetros de la tarea.

Live Task
% Find local maxima and minima
maxIndices = islocalmax(smoothedData);
minIndices = islocalmin(smoothedData);

% Display results
clf
plot(smoothedData,"Color",[77 190 238]/255,"DisplayName","Input data")
hold on

% Plot local maxima
plot(find(maxIndices),smoothedData(maxIndices),"^","Color",[217 83 25]/255,...
    "MarkerFaceColor",[217 83 25]/255,"DisplayName","Local maxima")

% Plot local minima
plot(find(minIndices),smoothedData(minIndices),"v","Color",[237 177 32]/255,...
    "MarkerFaceColor",[237 177 32]/255,"DisplayName","Local minima")
title("Number of extrema: " + (nnz(maxIndices)+nnz(minIndices)))
hold off
legend

Consulte también

Tareas de Live Editor

Funciones

Temas relacionados