# Mean of a cell array with different cell sizes?

7 Ansichten (letzte 30 Tage)
Sim am 28 Nov. 2023
Kommentiert: Sim am 28 Nov. 2023
Mean of a cell array with different cell sizes?
% This works:
a = {[1 3 4 5];[7 7 8 2];[5 4 1 9]}
a = 3×1 cell array
{[1 3 4 5]} {[7 7 8 2]} {[5 4 1 9]}
mean(cell2mat(a),2)
ans = 3×1
3.2500 6.0000 4.7500
% but this does not work:
a = {[1 3 4 5];[7 7 8 2];[5 4 1]}
a = 3×1 cell array
{[1 3 4 5]} {[7 7 8 2]} {[ 5 4 1]}
mean(cell2mat(a),2)
Error using cat
Dimensions of arrays being concatenated are not consistent.

Error in cell2mat (line 83)
m{n} = cat(1,c{:,n});
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Dyuman Joshi am 28 Nov. 2023
If the data in the cell array is compatible for concatenation, concatenate them and use mean for the specific dimension -
a = {[1 3 4 5];[7 7 8 2];[5 4 1 9]}
a = 3×1 cell array
{[1 3 4 5]} {[7 7 8 2]} {[5 4 1 9]}
b = cat(1,a{:})
b = 3×4
1 3 4 5 7 7 8 2 5 4 1 9
m = mean(b, 2)
m = 3×1
3.2500 6.0000 4.7500
If the data in the cell array is not compatible for concatenation, the best approach would be to pre-allocate the output and use a for loop. You could use cellfun() but that is just a for loop in disguise.
##### 6 Kommentare4 ältere Kommentare anzeigen4 ältere Kommentare ausblenden
Dyuman Joshi am 28 Nov. 2023
@Sim, Using the name-argument pair will give the output as a cell array.
a = {[1 3 4 5];[7 7 8 2];[5 4 1]}
a = 3×1 cell array
{[1 3 4 5]} {[7 7 8 2]} {[ 5 4 1]}
cellfun(@mean,a)
ans = 3×1
3.2500 6.0000 3.3333
Sim am 28 Nov. 2023
ah ok, even better! Super thank you!

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by