我有一个测量矩阵:
A=[x1,y1;x2,y2;x3,y3]
我的设备有一些干扰, 所以我想删除高于相邻点之间平均值10倍的测量值(行数)(平均y值)。
示例:
如果A=[1,1;
2,300;
3,2;
4;4]
在这种情况下,我想删除第二行(它显然是一个异常)。
谢谢
答案 0 :(得分: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),:)