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

1 visualizzazione (ultimi 30 giorni)
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 Commento
VBBV
VBBV il 20 Giu 2023
Spostato: VBBV il 21 Giu 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

Accedi per commentare.

Risposta accettata

James Tursa
James Tursa il 20 Giu 2023
Modificato: James Tursa il 21 Giu 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.

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by