48 views (last 30 days)

Show older comments

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)

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

Start Hunting!