Удаление экстремальных значений в скользящей средней (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),:)