How to average values in a structure

5 ビュー (過去 30 日間)
Anantha Padmanabhan
Anantha Padmanabhan 2016 年 8 月 24 日
回答済み: Andrei Bobrov 2016 年 8 月 24 日
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 件のコメント
Andrei Bobrov
Andrei Bobrov 2016 年 8 月 24 日
Please attach your data
Anantha Padmanabhan
Anantha Padmanabhan 2016 年 8 月 24 日
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.

サインインしてコメントする。

採用された回答

Thorsten
Thorsten 2016 年 8 月 24 日
j = 1;
for i= 1:10:60
snew(j).field = mean(cat(3, s(i:i+9).field), 3);
j = j + 1;
end
  1 件のコメント
Anantha Padmanabhan
Anantha Padmanabhan 2016 年 8 月 24 日
Thank you! That worked

サインインしてコメントする。

その他の回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2016 年 8 月 24 日
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));

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by