Effacer les filtres
Effacer les filtres

How to average values in a structure

16 vues (au cours des 30 derniers jours)
Anantha Padmanabhan
Anantha Padmanabhan le 24 Août 2016
Hello! i have a 1*60 structure which represents minute data and each field is a 25*25 double. Is there a matlab command to average every 10 values in the structure so that I can arrive at 10 second averaged data fields. My output should be a structure of size 1*10 with each value being of size 25*25 double. I was hoping there was an easier way of doing this instead of playing around with loops.
  2 commentaires
Andrei Bobrov
Andrei Bobrov le 24 Août 2016
Please attach your data
Anantha Padmanabhan
Anantha Padmanabhan le 24 Août 2016
So as you see I have a structure with 3 fields. Each value represents the velocity at every 0.05 seconds so in total for a time of 960/20=48 seconds. I want have second averaged values, So I would like to average every 20 values each of them which are 25*25.
So at the end I would like to have an output structure which has 48 lines and each dataset has 25*25 values.

Connectez-vous pour commenter.

Réponse acceptée

Thorsten
Thorsten le 24 Août 2016
j = 1;
for i= 1:10:60
snew(j).field = mean(cat(3, s(i:i+9).field), 3);
j = j + 1;
end
  1 commentaire
Anantha Padmanabhan
Anantha Padmanabhan le 24 Août 2016
Thank you! That worked

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 24 Août 2016
for your data (struct 1 x 960)
x = 20;
Q = struct2cell(data);
m = size(Q);
n = size(Q{1});
y = m(end)/x;
a = reshape(cat(3,Q{:}),[n, m(1),x,y]);
b = mean(a,4);
c = reshape(num2cell(b,[1 2]),m(1),y);
out = cell2struct(c,fieldnames(data));

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by