求小波分析在数据检测方面的matlab代码,比如给您一组数据,利用小波分析来找出其中的异常值。

求小波分析在数据检测方面的matlab代码,比如给您一组数据,利用小波分析来找出其中的异常值。,第1张

你做的这方面叫做“小波分析对信号奇异性检测”。

小波确实有这方面的应用。建议你直接去图书馆借《MATLAB小波分析(张德丰等编著)》(第二版),第一版有没有我不不知道哈。其中有一节就专门讲如何用小波检测第一类间断点和第二类间断点的,并且有方法将奇异点消除。讲的比较详细。

根据你的问题补充,我觉着你可以用欧几里得距离作为衡量波动的标准,具体程序如下:

data=[...

20000101   1221790   794164   427626

20000102   1282410   833566.4   448843.6

20000103   1241980   807287   434693

20000104   1265880   822822   443058

20000105   1301360   767802   533558

20000106   1298670   727255   571415

20000107   1273770   700573.5   573196.5

20000108   1300620   845403   455217

20000109   1301750   846138   455612

20000110   1318300   856895   461405

20000111   1327550   862908   464642

20000112   1356910   800577   556333 

20000113   1329360   744442   584918 

20000114   1312580   721919   590661 

20000115   1330460   864799   465661

20000116   1416710   855861.4   460848.6

20000117   1293410   840717   452693

20000118   1303150   847047.4   456102.6

20000119   1304690   769767   534923

20000120   1301800   729008   572792

]

date=data(:,1)-20000000

data=data(:,2:end)

x1=data(:,1)

x2=data(:,2)

x3=data(:,3)

x1_m=mean(x1)

x2_m=mean(x2)

x3_m=mean(x3)

data_m=repmat([x1_m,x2_m,x3_m],size(data,1),1)

temp=(data-data_m).^2

temp=sum(temp')'

stem(date,temp)

得到的结果如下图:

可以看出波动最大是1月6号和1月16号。你可以自己设个门限,超过门限的都作为奇异值。

楼主可以从以下两方面入手

一软件中使用数字滤波的而方法

http://wan.ltyx.com/cx/Document/doc3091.html

二修改硬件

加滤波电路,电源滤波电路

试试吧我估计是干扰造成的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8123667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存