matlab如何实现中值滤波
matlab是进行数值分析的一个重要的工具。今天讲一下matlab对一维信号进行中值滤波的使用方法。所谓的滤波,简单意义上来说,就是对原信号进行处理,通过一系列的变换得到另一个信号。好比A为一组输入信号,经过中值滤波,产生信号B。而中值滤波就是其中的变换。类似的滤波还有高斯平滑滤波,均值滤波等。
操作方法
- 01
中值滤波的原理:对于一串连续输入的信号(量化后是一组数据)。如下图所示,是输入的原信号。中值滤波的原理为,重新计算每一个x的输出值(y),新的输出值。相当于 y = new(x),new的操作是,从在以x为中心,长度为2k的原信号中(区间为[x-k+1,x+k]),提取出这段区间内中间的那个值,作为 y=new(x)的结果。
- 02
举例来说,输入:Y[1-10]:1,2,3,4,5,6,7,8,9,10. 取区间2k = 4,所以k=2; 执行中值滤波 K=中值滤波(Y) 由x-k+1>=1,所以当k=2时,x>=2 滤波时: K[1]=Y[1] K[2]=(Y[1]、Y[2]、Y[3]、Y[4])的中间值,即为2或3
- 03
matlab的中值滤波实现方式: 调用函数:A = medfilt1(B,n) B为输入信号,A为滤波后的信号,即结果。 n为控制滤波区间的参数。具体定义如下: 1、若n为基数,区间为[k-(n-1)/2,k+(n-1)/2], 2、若n为偶数,区间为[k-n/2,k+n/2+1],中值滤波表示用这个区间内的中间值代替这一点的值。
- 04
对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。
赞 (0)