# Calculates the mean if the difference of two or more number is 1

1 view (last 30 days)
edward kabanyas on 7 Feb 2021
Commented: edward kabanyas on 9 Feb 2021
Hi all;
I want to calculate mean of numbers if their difference with its neighbor is 1 . For example, if I have a matrix:
A = [9 10 12 14 15 16 18 19 22 23 25];
For each number whose difference with the neighbors is one, their mean is calculated. So, the intended result (called as matrix B):
B [9.5 12 15 18.5 22.5 25];
I try to use:
diff(A), so we get
1 2 2 1 1 2 1 3 1 2
But, how to use this diff(A) to do an operation , so that we get the resul: B [9.5 12 15 18.5 22.5 25];
Thank you for help.

Matt Gaidica on 8 Feb 2021
Edited: Matt Gaidica on 8 Feb 2021
A = [9 10 12 14 15 16 18 19 22 23 25];
idx = find(diff(A)==1);
B = mean([A(idx);A(idx+1)])
I think you have a typo above, 25 would not be in the final array:
B =
9.5000 14.5000 15.5000 18.5000 22.5000
Could also:
mv = movmean(A,2);
idx = find(diff(A)==1);
B = mv(idx+1)
edward kabanyas on 9 Feb 2021
great Matt