在用MATLAB进行数据分析的时候,坏点对正确结果的影响比较大,
因此,我么需要剔除野点,对于坏值的剔除,我们
利用 3σ准则 剔除无效数据;
3σ准则又称为拉依达准则,它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,
认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。
>> ave = mean(P);%mean 求解平均值 >> u = std(P);%求解标准差 >> for i = 1:6349 if(abs(P(i)-ave)>3*u)%不符合 3σ准则 , 剔除这个元素 P(i) = 0; else continue; end end >> P_ans = P(P~=0);%获取所有非 0 元素 ,是剔除元素 的完整过程 >> len = length(P_ans); >> len len = 6342
如果是有多变量作用于一个因变量,那么需要他们几个变量的值都满足 3σ准则;
运用逻辑运算符号 && 且 , 如果几个变量都满足法则 , 继续向下遍历 ,否则,就让这些变量全都赋值一个合理的剔除标志数 X
遍历结束后 , 对于 所有变量进行剔除 X 操作 Ans = a(a~=X); Ans 就是 a 里面所有不为 X 的数重新组成的新数列 , 正确处理后, 几个变量数列剔除元素后长度
相同 , 并且相对应的关系没有改变。
原文:http://www.cnblogs.com/masterchd/p/7894706.html