# how to average a vector of arrays in Matlab

4 views (last 30 days)
Abdullah Almohammadi on 27 Jun 2022
Answered: Steven Lord on 27 Jun 2022
Hello,
im new to matlab and I'd like to average a vector of arrays in matlab?
i have a vector of size (1,72) each column has an array of size(22,22)
i wanna avgerge the vector to get a desired output of (22,22)
i have tried this piece of code
for i= 1:72
wholeMean1{1} = mean(indexes_every.PLV.data {1,i}, 1); %% the output (1,22)
wholeMean2{1} = mean(indexes_every.PLV.data {1,i}, 2); %% the output (22,1)
wholeMean3{1} = mean(indexes_every.PLV.data {1,i}, 3); %% the output (22,22) ##
end
i just want to verfiy my result.
am i doing it correctly ?

Image Analyst on 27 Jun 2022
One simple intuitive way is to just add up all the arrays and divide by the number of the arrays
numArrays = numel(indexes_every.PLV.data)
sumMatrix = zeros(22, 22);
for k = 1 : numArrays
sumMatrix = sumMatrix + indexes_every.PLV.data{k};
end
meanMatrix = sumMatrix / numArrays

Steven Lord on 27 Jun 2022
Concatenate them in the third dimension then call mean with the dimension input.
M = magic(4)
M = 4×4
16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
E = eye(4)
E = 4×4
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
N = ones(4)
N = 4×4
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
C = {M, E, N}
C = 1×3 cell array
{4×4 double} {4×4 double} {4×4 double}
A = cat(3, C{:})
A =
A(:,:,1) = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 A(:,:,2) = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A(:,:,3) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
mean(A, 3)
ans = 4×4
6.0000 1.0000 1.3333 4.6667 2.0000 4.3333 3.6667 3.0000 3.3333 2.6667 2.6667 4.3333 1.6667 5.0000 5.3333 1.0000