多语言展示
当前在线:188今日阅读:23今日分享:31

matlab如何实现中值滤波

matlab是进行数值分析的一个重要的工具。今天讲一下matlab对一维信号进行中值滤波的使用方法。所谓的滤波,简单意义上来说,就是对原信号进行处理,通过一系列的变换得到另一个信号。好比A为一组输入信号,经过中值滤波,产生信号B。而中值滤波就是其中的变换。类似的滤波还有高斯平滑滤波,均值滤波等。
方法/步骤
1

中值滤波的原理:对于一串连续输入的信号(量化后是一组数据)。如下图所示,是输入的原信号。中值滤波的原理为,重新计算每一个x的输出值(y),新的输出值。相当于 y = new(x),new的操作是,从在以x为中心,长度为2k的原信号中(区间为[x-k+1,x+k]),提取出这段区间内中间的那个值,作为 y=new(x)的结果。

2

举例来说,输入: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

3

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],中值滤波表示用这个区间内的中间值代替这一点的值。

4

对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。

注意事项

如果您觉得该经验对您有用,请点击页面右上角上的【大拇指】或【分享】或【关注TA】给我一个支持。如果怕下次找不到此经验,点击下面的【☆收藏】该篇经验。

推荐信息