I have a 14 subject structure (ERP_data.ERP_data); for each subject there is 3D matrix: 32(electrode) x 381(data) x 32(condition); I would like to average the data across subjects with nanmean, so the final matrix will be 32x381x32; thank you for you help!
R

3 件のコメント

madhan ravi
madhan ravi 2018 年 8 月 29 日
Would you upload the data file/files and the code you tried?
madhan ravi
madhan ravi 2018 年 8 月 29 日
Where’s the data file?
Rene Sebena
Rene Sebena 2018 年 8 月 29 日
Sorry, but datafile is too big to upload...you can see the structure of that file on the picture.

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

 採用された回答

Jacob Ward
Jacob Ward 2018 年 8 月 29 日

0 投票

Here's a possible solution I used to solve your problem:
clear; close all;
% This part just creates dummy data similar to yours with the same structure
ERP_data(14) = struct('ERP_data',0);
for n = 1:14
ERP_data(n) = struct('ERP_data',rand(32,381,32));
end
averagedData = zeros(32,381,32); % Initializes final matrix
for n = 1:32
for m = 1:381
for o = 1:32
dataToAverage = zeros(14,1); % Initializes vector to average
for p = 1:14
dataToAverage(p) = ERP_data(p).ERP_data(n,m,o); % Grabs the data point from each subject for the position given by m,n, and o
end
averagedData(n,m,o) = nanmean(dataToAverage); % Averages those points and then assigns that value to the position given by m,n, and o in the final matrix
end
end
end
Hope that helps!

1 件のコメント

Rene Sebena
Rene Sebena 2018 年 8 月 29 日
Thanks a lot! This is what I did meanwhile, and it is also working:
GA_ERP_cue = []; for ch = 1:32 GA_ERP_cue_temp = nanmean([ERP_data(1).ERP_data(ch,:,:); ERP_data(2).ERP_data(ch,:,:); ERP_data(3).ERP_data(ch,:,:); ERP_data(4).ERP_data(ch,:,:); ERP_data(5).ERP_data(ch,:,:); ERP_data(6).ERP_data(ch,:,:); ERP_data(7).ERP_data(ch,:,:); ERP_data(8).ERP_data(ch,:,:); ERP_data(9).ERP_data(ch,:,:); ERP_data(10).ERP_data(ch,:,:); ERP_data(11).ERP_data(ch,:,:); ERP_data(12).ERP_data(ch,:,:); ERP_data(13).ERP_data(ch,:,:); ERP_data(14).ERP_data(ch,:,:)]); GA_ERP_cue(ch,:,:) = GA_ERP_cue_temp; end

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

その他の回答 (1 件)

Image Analyst
Image Analyst 2018 年 8 月 30 日

0 投票

You can use mean() with the 'omitnan' option.

カテゴリ

ヘルプ センター および File ExchangeTables についてさらに検索

質問済み:

2018 年 8 月 29 日

回答済み:

2018 年 8 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by