Удаление экстремальных значений в скользящей средней (MATLAB)

У меня есть матрица измерений:

A=[x1,y1;x2,y2;x3,y3]

и мое устройство имело некоторые помехи, поэтому я хочу удалить измерения (строки), которые в 10 раз превышают среднее значение между соседними точками (средние значения y).

пример:

если A=[1,1; 2,300; 3,2; 4;4]

в этом случае я хочу удалить вторую строку (это явно аномалия).

Спасибо

1 ответ

Решение

Найти скользящее среднее (учитывая n-1 соседи, n должно быть странно)

n = 3;
k = ones(n,1)/(n-1);
k((n+1)/2) = 0; %//leave out the point you're considering i.e. you kernel will be like [0.5,0,0.5] or [0.25,0.25,0,0.25,0.25] etc
av = conv2(A, k, 'same');

Теперь сравните, если они в 10 раз больше, чем в среднем по стране

ind = A >= av*10;

затем удалите строки:

A(~any(ind,2),:)
Другие вопросы по тегам