在Matlab中删除向量中的极值?

Inq*_*Kea 4 matlab

所以说,我有一个= [2 7 4 9 2 4 999]

我想从矩阵中删除999(这是一个明显的异常值).

是否有一般方法来删除这样的值?我有一组向量,并非所有向量都有这样的极值.prctile(a,99.5)将输出向量中的最大数字,无论它是多么极端(或非极端).

bla*_*bla 11

有几种方法可以做到这一点,但首先你必须定义什么是"极端"?它是否高于某个阈值?高于某些标准偏差?或者,如果你知道你确切地知道n这些极端事件并且它们的值更大比起其余的,你可以使用sort和删除最后的n元素.等...

例如,a(a>threshold)=[]将处理类似定义的阈值,同时a(a>mean(a)+n*std(a))=[]将处理丢弃n高于平均值的标准偏差值a.

一种完全不同的方法是使用中位数a,如果向量与您提到的一样短,您想要查看中值,然后您可以将任何高于该值的某个因子的阈值阈值a(a>n*median(a))=[].

最后,评估处理这些峰值的方法的一种方法是采用数据的直方图,并从那里开始工作......