I have array and want to calculate mean every five element in this array and replace every five element by their mean value

3 views (last 30 days)
Hello
I have different matrixes and size of those matrixes differ as well
Generally I want to do same thing on these arrays
For instance in case of array that consists of 3000 element, I want to calculate mean of every 5 element in this array and write this one single mean value instead of 5 elements
Shortly I want to calculate every next 5 element mean and replace those elements with this mean value
Can anyone provide me with corresponding code?

Answers (1)

Bruno Luong
Bruno Luong on 25 Aug 2022
Edited: Bruno Luong on 25 Aug 2022
A = 1:100
A = 1×100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
n = 5;
Astair = repelem(mean(reshape(A,n,[]),1),1,n)
Astair = 1×100
3 3 3 3 3 8 8 8 8 8 13 13 13 13 13 18 18 18 18 18 23 23 23 23 23 28 28 28 28 28
plot(A)
hold on
plot(Astair)
  3 Comments
Bruno Luong
Bruno Luong on 25 Aug 2022
Edited: Bruno Luong on 25 Aug 2022
Truncation if the length of the original vector if not divisible by n:
Astair = repelem(mean(reshape(A(1:n*floor(end/n)),n,[]),1),1,n);
Tip to reshape result in column
Astair = reshape(Astair,[],1);

Sign in to comment.

Categories

Find more on Resizing and Reshaping Matrices 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!