【发布时间】:2015-12-16 18:20:17
【问题描述】:
我正在寻找一种方法来消除给定数据集中的异常值。例如:
应该消除所有这些峰值。我尝试了不同的过滤器,如medfilt,但峰值仍然存在。我也试过低通滤波器,但也没有用。我是过滤信号的初学者,所以我可能做错了。
您可以下载x array here 和y array here 的数据集。
我也可以想象一个循环来比较相邻的值,但我确定必须有一个内置函数?
这是使用medfilt1(input,15)的结果:
山峰正在消失,但随后我得到了这些丑陋的台阶,这是我不想要的。
【问题讨论】:
-
一个简单的方法是对你的数据进行比较,看看哪里的值变化超过了某个阈值。
-
This 是我在阅读“数据集中的异常值”时所关联的。
-
哈哈安德拉斯,实际上我只是翻译了德语单词,我得到了“怪胎值”=D excaza,所以你的意思是要循环遍历数据,检查某个差异并消除它?我也有这个想法,但我认为可能有一个内置功能......
-
您是想用附近样本的插值替换“怪胎”值,还是只想删除“怪胎”值?
-
您遇到问题的原因之一是您的 x 数据
v_Rolle1看起来也已损坏并且不是单调递增的。放大你的第一个情节。您可以尝试对数据进行排序:[X,idx] = sort(v_Rolle1);plot(X,P1(idx));。