标签: matlab
假设我有下图所示的矢量。从常识来看,我们可以看到有2个值突然偏离向量的趋势。
如何消除这些突然变化。我的意思是如何通过邻居的平均值自动检测和替换这些噪声值。
答案 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);