查看: 849|回复: 2|关注: 0

[已解决] 关于medfilt1函数的问题

[复制链接]

新手

14 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
宋老师,您好,我想问下medfilt1这个函数的具体执行过程是怎样的,比如
x = [2  2  6  2  1  2  4  4  4  2  4];
y = medfilt1(x, 5)之后的值就变为了
y =

     2     2     2     2     2     2     4     4     4     4     2
从第3个位置到第9个位置的结果可以理解,但前两个值(2  2)和后两个值(4  2)具体是怎么得来的始终搞不明白,想请宋老师解答下。

论坛优秀回答者

17

主题

4751

帖子

1078

最佳答案
  • 关注者: 494
发表于 2018-2-23 19:57:11 | 显示全部楼层 |此回复为最佳答案
本帖最后由 songzy41 于 2018-2-23 19:59 编辑

medfilt1是中值滤波。LZ实际上细看一下该函数的说明就应该明白的。LZ的数组x = [2  2  6  2  1  2  4  4  4  2  4];共11个数,LZ是用y = medfilt1(x, 5)表达式进行中值滤波。函数是取x(k-2):x(k+2)中的中值作为输出y(k),所以y(k)中第3个位置到第9个位置的结果容易理解。对y(1),只有x(1),x(2),x(3),在x(1)之前不存在数,则medfilt1函数的说明中指出,超出数组范围的将补0(zeropad)。5个数按从大到小排列后取中值有:
y(1)的计算是从[6 2 2 0 0]中取中值是2
y(2)的计算是从[6 2 2 2 0]中取中值是2

y(10)的计算是从[4 4 4 2 0]中取中值是4
y(11)的计算是从[4 4 2 0 0]中取中值是2

新手

14 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
 楼主| 发表于 2018-2-24 16:39:38 | 显示全部楼层
songzy41 发表于 2018-2-23 19:57
medfilt1是中值滤波。LZ实际上细看一下该函数的说明就应该明白的。LZ的数组x = [2  2  6  2  1  2  4  4  4 ...

嗯嗯,终于搞明白了,非常感谢宋老师!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表