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

조회 수: 1(최근 30일)
edward kabanyas 2021년 2월 7일
댓글: edward kabanyas 2021년 2월 9일
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 2021년 2월 8일
편집: Matt Gaidica 2021년 2월 8일
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)
댓글 수: 6표시숨기기 이전 댓글 수: 5
edward kabanyas 2021년 2월 9일
great Matt

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!