如何消除Matlab中向量的突然变化?

时间:2016-07-02 09:06:49

标签: matlab

假设我有下图所示的矢量。从常识来看,我们可以看到有2个值突然偏离向量的趋势。

如何消除这些突然变化。我的意思是如何通过邻居的平均值自动检测和替换这些噪声值。

enter image description here

1 个答案:

答案 0 :(得分:1)

定义阈值,计算平均值,然后比较值与邻居平均值之间的相对误差:

threshold  = 5e-2;
averages   = [v(1); (v(3:end) + v(1:end-2)) / 2; v(end)];
is_outlier = (v.^2 - averages.^2) > threshold^2 * averages.^2;

然后替换异常值:

v(is_outlier) = averages(is_outlier);