【发布时间】:2019-05-13 19:57:24
【问题描述】:
假设数据如下:
X y
1 5
2 6
3 1
4 7
5 3
6 8
我想把3 1和5 3去掉,因为它们与上一行的差值大于3。其实我是想和它们一起画一个图,希望它平滑。
我试过了
for qq = 1:size(data,1)
if data(qq,2) - data(qq-1,2) > 3
data(qq,:)=[];
end
end
但是,它给出了:
Subscript indices must either be real positive integers or logicals.
此外,我猜测数组的大小在我删除一些元素时会发生变化。
最后,没有连续元素的差值必须大于阈值。
【问题讨论】:
-
从 2 开始循环。如果从 1 开始,
qq-1会给你一个索引 0,这是非法的。 -
@beaker,谢谢,我想我还有一个问题,因为我删除了一些数组大小变化的元素
-
您只想检查第二列吗?为什么要保留
4 7和6 8? -
"最后,没有连续元素的差值必须大于阈值。"这意味着,原则上,您最终可能会删除大部分数据。您确定始终只有一个元素处于关闭状态(异常值)吗?我不确定这是处理数据的最佳方式。也许您的意思是以对异常值具有鲁棒性的方式拟合曲线,例如robust LOESS?
-
没关系,我们都在不同的时区,有时您需要等待几个小时才能有人醒来。 :)