matlab如何剔除噪音数据?

2024-12-29 10:53:53
推荐回答(2个)
回答1:

可以用卷积,利用卷积的平滑原理

命令是conv

比如数据是a,

b=ones(1,20);%这里的20可以视情况而定

c=conv(a,b);

c([1:10,end:-1:end-8])=[]

得到的c长度比a大(20-1),需要去掉,前面去10个,后面去9个

图片是我的一个数据这样处理后的结果

回答2:

一般去噪,大的方向来说有两类,一是"删除"异常值,二是"转化"异常值。比如将数据转化为秩,又如分位数分箱,前1%的数据记为1,前2%的数据记为2,以此类推。这样一来,确实摆脱了异常值,但将连续型的数据转为秩,或者转为1-100,1-1000等等,信息的损失是无法避免的。

第一种方法,由于观测的删除造成信息损失,第二种则由于数据形态的转变造成信息损失。

很多时候,在不能保证原汁原味的数据情况下,少许的信息损失也是可以接受的,不同的去噪方法,造成的信息损失自然各不相同。