Mean of nested cell arrays

3 visualizzazioni (ultimi 30 giorni)
ErikaZ
ErikaZ il 5 Lug 2018
Risposto: Stephen23 il 6 Lug 2018
I have attached the 2 arrays which I am trying to calculate the mean, independently.
mycell.mat is a {10x1}{3x1}{7x1} cell. I need to calculate the mean of the 10 values within the nested cells.
So I need the: mean of mycell{1:10,1}{1,1}(1,1)
mean of mycell{1:10,1}{1,1}(2,1)
mean of mycell{1:10,1}{1,1}(3,1) and so on
mean of mycell{1:10,1}{2,1}(1,1)
mean of mycell{1:10,1}{2,1}(2,1)
mean of mycell{1:10,1}{2,1}(3,1) and so on
mean of mycell{1:10,1}{3,1}(1,1)
mean of mycell{1:10,1}{3,1}(2,1)
mean of mycell{1:10,1}{3,1}(3,1) and so on
Thank you

Risposta accettata

Stephen23
Stephen23 il 6 Lug 2018
>> M = cell2mat(permute(cat(3,cv_perf{:}),[2,1,3]));
>> Z = mean(M,3)
Z =
0.058748 0.078402 0.095877
0.094780 0.133897 0.116949
0.144421 0.190915 0.140248
0.133917 0.158366 0.152102
0.143377 0.130409 0.130549
0.183644 0.180682 0.164413
0.084289 0.158605 0.090256

Più risposte (1)

Akira Agata
Akira Agata il 6 Lug 2018
How about the following? The result out is 10-by-1 array.
- out(1) is mean of cv_perf{1}{1}(1) ~ cv_perf{10}{1}(1)
- out(2) is mean of cv_perf{1}{1}(2) ~ cv_perf{10}{1}(2)
...
- out(10) is mean of cv_perf{1}{1}(10) ~ cv_perf{10}{1}(10)
load('mycell.mat')
c = [cv_perf{1:10}];
d = cell2mat(c(1,:));
out = mean(d,2);
  1 Commento
ErikaZ
ErikaZ il 6 Lug 2018
Modificato: ErikaZ il 6 Lug 2018
The result out is 7x1 and it only does the mean of the first 3x1 block. If dimensions and shapes are kept, I should have a cell of 3x1 with 7 means in each row cell.
Do not worry about mycell2.mat. I am going to erase it from the Question but I still need a solution for mycell.mat

Accedi per commentare.

Categorie

Scopri di più su Tables 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