我有一串的数据 我用这串数据画出了一个曲线图,后发现曲线上有很多的干扰(就是数据中有很多或太大或太小的数据)我想将这些数据去掉,可以用滤波的方式对图像进行处理吗?如果对图像进行处理的话,还能不能再由处理后的图像得到自己所要的数据?真的实在是走投无路了 请大家帮帮忙吧 谢谢大家了
那么如果或大或小的数据有很多个 并且都是连着这 这样中值滤波也可以吗?
可以,如果你是图像,可以用Matlab的自带滤波函数进行滤波,由于长时间不用,所以我也记不得具体函数的名称,就在Matlab 参考书上的图像处理那一张,看看就明白!由于你是一组数据的处理,所以提供给你一种滤除异常点的方法即中值滤波,原理很简单,如果你是一维数组,只需要取一个滑动窗口,大小这里取w=5举个例子,有一组数:y=[1 3 9 2 3 2 4……];w=5;n=size(y,2);for i=1:n-w t=y(i:i+w-1); t=sort(t);%排序 y(i)=t(fix(w/2)+1);end若为二维数据,可取3*3的矩阵!还可以加入判断过程……%====================================================================这就需要你加入判断的过程,昨天没写完,接着回答你,如1.加大窗口长度,同时区窗口内元素的均值,可除去最大最小值,yave=(sum(y(i,i+w-1))-max(y(i,i+w-1))-min(y(i,i+w-1)))/(w-2)2.若元素abs(y(i)-yave)>T(T为自定义阈值,可预设也可通过数据规律定义)则y(i)=yave;反之,则y(i)可以保留原值 |
|