Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中自动截断曲线剔除异常值_Matlab_Plot_Statistics_Outliers - Fatal编程技术网

matlab中自动截断曲线剔除异常值

matlab中自动截断曲线剔除异常值,matlab,plot,statistics,outliers,Matlab,Plot,Statistics,Outliers,我正在生成一些数据,其曲线图如下所示 在所有的图中,我在开始和结束时都得到了一些异常值。目前,我正在截断第一个和最后10个值。有没有更好的方法来处理这个问题 我基本上是在尝试自动识别以下两点。 这是一个相当普遍的问题,有很多方法,通常您会使用一些关于底层系统的先验知识,使其易于处理 因此,例如,如果你希望看到上面的模式-快速下降,线性部分(上升或下降)和快速上升-你可以尝试对曲线求导,寻找大的值和/或符号反转。也许先把数据装箱会有帮助 如果您的模式不太容易定义,但您希望出现线性趋势,则可以使用

我正在生成一些数据,其曲线图如下所示

在所有的图中,我在开始和结束时都得到了一些异常值。目前,我正在截断第一个和最后10个值。有没有更好的方法来处理这个问题

我基本上是在尝试自动识别以下两点。

这是一个相当普遍的问题,有很多方法,通常您会使用一些关于底层系统的先验知识,使其易于处理

因此,例如,如果你希望看到上面的模式-快速下降,线性部分(上升或下降)和快速上升-你可以尝试对曲线求导,寻找大的值和/或符号反转。也许先把数据装箱会有帮助

如果您的模式不太容易定义,但您希望出现线性趋势,则可以使用
fit
将数据拟合到适当的曲线类别,然后将异常值检测为拟合误差超过给定阈值的异常值

在这两种情况下,您仍然必须选择阈值-均值、方差和高阶矩在这里会有所帮助,但您可能必须分析现有数据(您的训练集),以经验方式确定值


也许,正如Shai指出的那样,在所有这些之后,你可能会发现去掉前十个点和后十个点会给你所花的时间带来最好的结果(参见)。

去掉前十个/后十个样本有什么不对?你知道什么是吻吗?保持简单。它并不总是第一个和最后10个。但我只在开始和结束时得到异常值。通过将其固定为10i松散数据,或者数据中可能仍然存在异常值。这是一个很好的角度:您可以从每一端走这条线,直到满足某个标准-对数或逆的导数可能会起作用。谢谢。导数是个好主意。