Average every 3 rows of 1 column in a 12 x 8 array

2 views (last 30 days)
I have a 12 x 8 array of data and want to average every 3 rows of the 4th column in the array, resulting in a 4 x 1 array. To be extremely clear, I want rows 1 to 3 averaged, then 4 to 6 averaged, then 7 to 9 averaged then 10 to 12 averaged.
I need to also apply this to other arrays that have different numbers of rows but still in multiples of 3 (e.g., could be 15 x 8 or 18 x 8 swapped for the original 12 x 8).
%Here is the example data in the 12 x 8 array
34 6 4 -6.60874766440390 -40.7725049965035 16217 0.289000000000000 1.02200000000000
35 6 5 -6.54326464638770 -40.5611336664881 16525 0.286000000000000 1.23700000000000
36 6 6 -6.54628693952691 -40.6729573224369 16386 0.202000000000000 1.13000000000000
172 6 4 -6.61176995754311 -39.6642486096006 16209 0.232000000000000 1.03300000000000
173 6 5 -6.62184426800714 -40.0039787602111 16212 0.236000000000000 1.02700000000000
174 6 6 -6.66113407881686 -39.9370137005201 16069 0.271000000000000 1.16200000000000
310 6 4 -6.64803747521362 -40.3153910672626 16143 0.239000000000000 1.13100000000000
311 6 5 -6.61479225068232 -40.5411679705423 16113 0.285000000000000 1.06400000000000
312 6 6 -6.63695573370318 -40.0871548121586 16266 0.249000000000000 1.02200000000000
448 6 4 -6.76792176973558 -40.3663142652769 16176 0.297000000000000 1.01800000000000
449 6 5 -6.68631985497693 -40.6696972594111 16075 0.277000000000000 1.19400000000000
450 6 6 -6.68631985497693 -40.8846682513060 16046 0.238000000000000 1.17900000000000
  1 Comment
VBBV
VBBV on 20 Jun 2023
Moved: VBBV on 21 Jun 2023
Data = [
34 6 4 -6.60874766440390 -40.7725049965035 16217 0.289000000000000 1.02200000000000
35 6 5 -6.54326464638770 -40.5611336664881 16525 0.286000000000000 1.23700000000000
36 6 6 -6.54628693952691 -40.6729573224369 16386 0.202000000000000 1.13000000000000
172 6 4 -6.61176995754311 -39.6642486096006 16209 0.232000000000000 1.03300000000000
173 6 5 -6.62184426800714 -40.0039787602111 16212 0.236000000000000 1.02700000000000
174 6 6 -6.66113407881686 -39.9370137005201 16069 0.271000000000000 1.16200000000000
310 6 4 -6.64803747521362 -40.3153910672626 16143 0.239000000000000 1.13100000000000
311 6 5 -6.61479225068232 -40.5411679705423 16113 0.285000000000000 1.06400000000000
312 6 6 -6.63695573370318 -40.0871548121586 16266 0.249000000000000 1.02200000000000
448 6 4 -6.76792176973558 -40.3663142652769 16176 0.297000000000000 1.01800000000000
449 6 5 -6.68631985497693 -40.6696972594111 16075 0.277000000000000 1.19400000000000
450 6 6 -6.68631985497693 -40.8846682513060 16046 0.238000000000000 1.17900000000000];
K = 1;
for k = 1:4
Mean(k) = mean(Data(K:K+2,4));
K = K + 3;
end
Mean.'
ans = 4×1
-6.5661 -6.6316 -6.6333 -6.7135

Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 20 Jun 2023
Edited: James Tursa on 21 Jun 2023
E.g.,
Data = [
34 6 4 -6.60874766440390 -40.7725049965035 16217 0.289000000000000 1.02200000000000
35 6 5 -6.54326464638770 -40.5611336664881 16525 0.286000000000000 1.23700000000000
36 6 6 -6.54628693952691 -40.6729573224369 16386 0.202000000000000 1.13000000000000
172 6 4 -6.61176995754311 -39.6642486096006 16209 0.232000000000000 1.03300000000000
173 6 5 -6.62184426800714 -40.0039787602111 16212 0.236000000000000 1.02700000000000
174 6 6 -6.66113407881686 -39.9370137005201 16069 0.271000000000000 1.16200000000000
310 6 4 -6.64803747521362 -40.3153910672626 16143 0.239000000000000 1.13100000000000
311 6 5 -6.61479225068232 -40.5411679705423 16113 0.285000000000000 1.06400000000000
312 6 6 -6.63695573370318 -40.0871548121586 16266 0.249000000000000 1.02200000000000
448 6 4 -6.76792176973558 -40.3663142652769 16176 0.297000000000000 1.01800000000000
449 6 5 -6.68631985497693 -40.6696972594111 16075 0.277000000000000 1.19400000000000
450 6 6 -6.68631985497693 -40.8846682513060 16046 0.238000000000000 1.17900000000000];
mean(reshape(Data(:,4),3,[])).'
ans = 4×1
-6.5661 -6.6316 -6.6333 -6.7135
The reshape( ) puts the data you want averaged into individual columns of three elements each, and the mean( ) automatically operates on columns giving the result you want. This naturally results in a row vector, so the final transpose reshapes it into a column vector. The method shown works for any sized matrix where the number of rows is a multiple of 3.

More Answers (0)

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!