How to average values in a structure

2 Ansichten (letzte 30 Tage)
Anantha Padmanabhan
Anantha Padmanabhan am 24 Aug. 2016
Beantwortet: Andrei Bobrov am 24 Aug. 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 Kommentare
Andrei Bobrov
Andrei Bobrov am 24 Aug. 2016
Please attach your data
Anantha Padmanabhan
Anantha Padmanabhan am 24 Aug. 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Thorsten
Thorsten am 24 Aug. 2016
j = 1;
for i= 1:10:60
snew(j).field = mean(cat(3, s(i:i+9).field), 3);
j = j + 1;
end

Weitere Antworten (1)

Andrei Bobrov
Andrei Bobrov am 24 Aug. 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));

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by