求小波分析在数据检测方面的matlab代码,比如给您一组数据,利用小波分析来找出其中的异常值。
找出下表中的异常值,并拟合出应该是多少。
日期 用 水量 1厂供水量 2厂供水量
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
望能给源代码。不是小波分析的方法也行。 展开
你做的这方面叫做“小波分析对信号奇异性检测”。
小波确实有这方面的应用。建议你直接去图书馆借《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号。你可以自己设个门限,超过门限的都作为奇异值。
1、能不能细化到找出某一个值是奇异的?不要去掉一整组数据。
2、再拟合出该值应该是多少。
非常谢谢您的回答,虽然我的分不多了,但我愿意给您再加10分。
1.你要是仅仅要一个,那取欧几里得距离最大值对应的那个就行了。
2.你所谓的拟合是指找到那个中心么?我这个仅仅是三个变量各做了一个平均,就是那个data_m中的一行。这样做是不严谨的,应该找到一个使三个变量到某一个三维向量距离最短的点。
2013-01-30
谢谢,比如数据是:
X=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
Y=[1221790 1282410 1241980 1265880 1401360 1298670 1273770 1300620 1301750
1318300 1327550 1356910 1329360 1312580 1330460 ];
然后根据Y变量的波动情况判断Y数据中是否存在异常值,就是波动特别大的那种,这里第四个我给改成算是异常数据类型的了,请问能加一下我QQ么?1019997263。
你加我吧!1762147196。你这个问题挺有意思,我试试看