# Is it possible to detect and replace abnormal/wrong numbers in an array?

1 view (last 30 days)
Rikke on 20 Mar 2019
Commented: Chris Turnes on 21 Mar 2019
I have a dataset which is an array containing values, and which are plotted in the figure below. A section of the array for the figure is: A = [.... 25.9, 25.9, 26.2, 27, 28, 29, 29.3, 29.6, 3, 30.4, 30.5, 30.4, 30.3, 30.3, ....]; Here is number 3 an abnormality in the array. Is it possible to detect these abnormal numbers and replace them with the average value of the number before and after? So for the number 3 in A I want it to be (29.6+30.4)/2.
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Kevin Phung on 20 Mar 2019
A = [25.9, 25.9, 26.2, 27, 28, 29, 29.3, 29.6, 3, 30.4, 30.5, 30.4, 30.3, 30.3]
abnorm =mean(A) - 3*std(A); % you can set however many standard deviations to constitute 'abnormal'
n = find(A<abnorm); %locations of abnormals
for i = 1:numel(n)
if or(n(i) == 1, n(i)==numel(A)) %if first or last index, replace with NaN;
A(n(i)) = nan;
else
A(n(i)) = (A(n(i) - 1) + A(n(i) + 1)) / 2;
end
end
A(isnan(A)) = []; %remove the endpoints that are NaN
let me know if this works for you
##### 7 CommentsShowHide 6 older comments
Rikke on 20 Mar 2019
Aha, perfect!

Sign in to comment.

### More Answers (1)

Walter Roberson on 20 Mar 2019
##### 2 CommentsShowHide 1 older comment
Chris Turnes on 21 Mar 2019
You may also be interested in the filloutliers function, which lets you not only identify outliers but replace them as well.

Sign in to comment.

### Categories

Find more on Matrices and Arrays in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!