baobao1982 发表于 2009-3-3 17:46

MATLAB剔除奇异点的问题

本帖最后由 wdhd 于 2016-9-14 10:53 编辑

  在振动数字信号的采集中,由于采集不当或外界干扰,或仪器的临时故障等原因,有时候会出现异常数据,即所谓的错点(也叫做奇异点)。错点的存在会严重影响信号的分析结果,特别是对高频分量的影响,必须给予剔除。
  剔除奇异点可以用以标准差(均方根)为基础的奇异点剔除法。这种方法是以数据值是否超过标准差的3倍为判别标准。通过对奇异点相邻点的值求和,再取平均的方法,剔除错点。
  以下是我剔除奇异点的MATLAB程序,可是剔除后的数据的长度和原始信号的不一样长,而且数据不同,长度相差的也不同,为什么呢?
  还有做剔除前后数据的互相关函数时,中间的那个极大值有什么意义?
  clear all
  fidin=fopen('qidong1.txt','r')
  u1=fscanf(fidin,'%f',inf)
  u_1=u1(abs(u1-mean(u1))<=3*std(u1))
  figure(1)
  subplot(211)
  plot(u1)
  subplot(212)
  plot(u_1,'m')
  hold on
  plot(u1,'b')
  =xcorr(u1,u_1)
  figure(2)
  plot(a)
  [ 本帖最后由 baobao1982 于 2009-3-3 17:47 编辑 ]

Juneliu 发表于 2009-3-3 18:03

小波模极大值去噪,去看看吧

baobao1982 发表于 2009-3-12 15:58

回复 楼主 baobao1982 的帖子

在处理个别奇异值时,可以直接剔除该点吗?

baobao1982 发表于 2009-3-12 15:59

回复 沙发 Juneliu 的帖子

你的小波模极大值去噪
我不是很懂
请赐教

ChaChing 发表于 2009-3-21 20:29

个人讯号处理并非专家! 仅说说个人意见
LZ说的错点(奇异点), 看起来好像就是个人所称的spike
平常工程上会设定一准则(如是否超过标准差的3倍), 但不会剔除掉, 而会使用前後几点进行拟合(fitting)
u_1=u1(abs(u1-mean(u1))<=3*std(u1))就会剔除掉
LZ画互相关函数时, 使用plot(b,a)可能较可看出意义

baobao1982 发表于 2009-3-25 09:14

回复 7楼 ChaChing 的帖子

但还有个问题
我的奇异点都是出现在每个文件的开头的
使用u_1=u1(abs(u1-mean(u1))<=3*std(u1))
确实可以剔除掉
我上面已经说过了
当该值比较大时,剔除的效果等于把该值直接提出,文件少了1个数据
当该值比较小时,剔除的效果是以牺牲数据的长度为代价,这时文件少了数十个到数百个个数据
我觉得此方法不适合我的数据的奇异值剔除
不知道主任同意吗?
页: [1]
查看完整版本: MATLAB剔除奇异点的问题