Извлечение данных из графика с помощью кисти/выбора данных в Matlab

На моем графике у меня есть ось x в формате даты и времени, а y - соответствующие наблюдения. Есть несколько скоплений аномалий, которые я могу распознать визуально. Я попытался выделить аномалии с помощью инструмента «Кисть/Выбрать данные» на рисунке, но когда я попытался скопировать данные в буфер обмена и вставить в блокнот, данные не в формате даты и времени, и я не могу их интерпретировать.

Я хотел бы выбрать данные из графика и удалить индексы из набора данных. Я предоставляю образец данных, которые я скопировал из кисти.

56.5868518518519    463.32834344035
56.6596759259259    463.337
56.6603240740741    463.335
56.6608217592593    463.326 

Спасибо введите здесь описание изображения


person pkj    schedule 21.09.2019    source источник


Ответы (1)


Вы смотрели rmoutliers(A)? Если все, что вам нужно, это удалить выбросы, эта функция сделает именно это.

Если вы по какой-либо причине не можете использовать эту функцию, вы можете использовать это:

% Compute the median absolute difference
meanValue = mean(vector)
% Compute the absolute differences.  It will be a vector.
absoluteDeviation = abs(vector - meanValue)
% Compute the median of the absolute differences
mad = median(absoluteDeviation)
% Find outliers.  They're outliers if the absolute difference
% is more than some factor times the mad value.
sensitivityFactor = 6 % Whatever you want.
thresholdValue = sensitivityFactor * mad;
outlierIndexes = abs(absoluteDeviation) > thresholdValue
% Extract outlier values:
outliers = vector(outlierIndexes)
% Extract non-outlier values:
nonOutliers = vector(~outlierIndexes)%Compute the median absolute difference

Кредит принадлежит этот парень, но это очень простой подход, и он должен делать именно то, что вам нужно.

person Jurģis Toms Liepiņš    schedule 23.09.2019
comment
спасибо @toms за предложение функции, но функция представлена ​​​​только в R2018b. На самом деле я написал свой собственный алгоритм для обнаружения выбросов, но он не может захватить эти кластеры. - person pkj; 23.09.2019
comment
@phj вы должны указать, какую версию Matlab вы используете - person Jurģis Toms Liepiņš; 23.09.2019
comment
@pkj Я отредактировал свой ответ и добавил код, который вы можете использовать - person Jurģis Toms Liepiņš; 23.09.2019