MATLAB Answers

How to avoid statistical outliers under special speed (acceleration and deceleration)

4 views (last 30 days)
Nik Rocky
Nik Rocky on 7 Oct 2020
Commented: Steven Lord on 7 Oct 2020
Hello dear community,
I use and plot some measure data (rotating speed of 4 motors). The measures work great up to speed of 30-40 1/s. Under this speed the measured values sometime get some statistical outliers (look screenshot) with high values. I'm already used a median filter, but the filter changes also some "good" data values and passed some outliers.
Do you have an idea how can I avoid this values and set the values in right range?
Maybe interpolaton?
Or using of median Filter just under 30-40 Hz?
Example values (outlines on beginning):
0
0
0
0
0
0
35.9221208420145
10.8085906678628
15.4286063840078
18.5873605947955
20.6104824913951
22.2443681126636
23.6116358141292
24.6560481286060
25.5008374435171
26.1552791927909
26.7056931426144
27.1928800542243
27.5813385525270
27.8667967117180
28.0977802753583
28.2559302961520
28.3540485870989
28.5013965684319
29.0721344386347
31.4844461301742
37.3895684126500
39.7713149391002
41.3880651693887
43.7340097526842
45.0987680637302
45.1770937663817
45.5087891515580
45.0346762609292
44.6965102588530
44.2460477779540
44.8309871783377
45.2556960082974
45.4724575012369
45.6825445034530
47.5853103775104
48.0169019494862
48.7487797333042
49.1463273343138
50.6549677435695
Example values (outlines on the end):
92.7870315625418
91.8920602119135
91.9215499840484
91.6945182796246
90.8861434488664
90.0099028473191
91.8584443431570
91.3844784177349
90.0810712046883
90.9688215024709
93.1290412001423
93.3871501105416
95.3125315594778
94.0114693992667
96.2167553022808
94.8037543768042
93.0367194307825
92.7335897091072
91.5667063455728
91.2529014457080
91.3373726929620
90.2445627650934
90.6590942713811
89.9262569565512
89.0005722458669
89.3424413764390
87.9258263224508
87.4368676356960
88.4529586175770
89.1186168790660
85.4503219449361
85.8958941762584
86.3707030575229
83.2867895195613
80.0216058335751
76.1143109101614
74.4114068617345
73.9287728040303
70.0224085383574
74.1583014678347
72.9980290532156
67.7454333028347
58.9773353095348
51.6902718908302
45.9760701738506
41.3103647705209
37.2113792397715
33.8588979365184
30.9228246623297
28.3032740033323
26.2249671931807
24.1875396000099
22.2651696471118
20.5769784764805
19.2888836581187
18.0384941465087
16.7995702984910
15.7064773512597
14.6524440276638
13.5649621267317
12.6668862260279
11.7483046875093
10.8316544268972
10.0875600209821
9.32062000764291
8.71383757406762
8.09775611178143
348.432055749129
59.0702345088310
28.5013965684319
19.8515106999643
13.8392980708019
9.81836033382425
0
43.7024735600035
0
8.35757028716612
0
0
0
0
0
0
0
0
0
0
Thank you!

  0 Comments

Sign in to comment.

Answers (1)

Steven Lord
Steven Lord on 7 Oct 2020
Use isoutlier to detect the outliers, rmoutliers to remove them, and/or filloutliers to replace them.

  3 Comments

Nik Rocky
Nik Rocky on 7 Oct 2020
Great, thank you!
I'm using:
v1 = filloutliers(v1,'previous','movmean',30);
v2 = filloutliers(v2,'previous','movmean',30);
v3 = filloutliers(v3,'previous','movmean',30);
v4 = filloutliers(v4,'previous','movmean',30);
and get:
its allready better, but not away. I follow working to solve it!
Steven Lord
Steven Lord on 7 Oct 2020
If you have time-based data where the data may be irregularly sampled, you might want to specify duration data as the 'SamplePoints' option (the number of seconds since the start of the data collection when each data point was sampled) and specify the window length as a duration array as well. See the "Determine Outliers with Sliding Window" example on the documentation page for filloutliers for an illustration of this technique.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!