我想写一个1-D中值滤波器来消除信号中的毛刺。 我在matlab上写了中值滤波器代码,然后将它与medfilt1函数进行比较。我的中值滤波器不起作用。
- 我的中位数过滤顺序是8。
在我的实施中, 当数据到来时,我填充数组(数组的大小为8)。 当输入数据计数为8时,我取中间值并写入 中间值到中值滤波器输出数组。然后我等待接下来的8个数据。当ı取8个数据时,ı取中间值并将此中间值写入中值滤波器输出数组。等等。 (我实现了排序算法和ı测试它。它运作良好)。
这是我的截图,
我的传入数据颜色为红色。 matlab的medfilt1是绿色的。 我的中值滤波器输出为蓝色。
我认为我的算法错了,但我不知道什么是正确的算法?
答案 0 :(得分:1)
您的实施错误,可能有两种方式(很难说,因为您没有向我们展示您的代码)。