标签: matlab filter
我正在寻找一种方法来消除给定数据集中的怪胎值。例如:
应该消除所有这些峰值。我尝试过不同的过滤器,例如medfilt,但峰值仍在那里。我也尝试过低通滤波器,但它也没用。我是过滤信号的初学者,所以我可能做错了。
medfilt
您可以下载x array here和y array here的数据集。
我还可以想象一个循环来比较彼此相邻的值,但我确定必须有一个内置函数?
以下是使用medfilt1(input,15)的结果:
medfilt1(input,15)
峰值正在消失,但那时我得到了这些丑陋的步骤,这是我不想要的。
答案 0 :(得分:7)
只需使用中值滤波器!如果这是一个1像素的“宇宙”尖峰,medfilt1(data,3)会做。如果峰值仍然存在,请将窗口大小增加到5或更多...
medfilt1(data,3)
修改强> 所以这就是op的数据:
所以我们看到数据不是完全统一或有序的,并且尖峰中有很多数据点,不像人们首先从问题中理解的那样(伙计们请正确地绘制数据!)现在的问题是,数据在尖峰还是在基线上?