By element average of multiple matrices

80 次查看(过去 30 天)
Hi,
I have 40 matrices of 781x981 in dimension. I need to calculate the by element mean of all these matrices in a new, 41st matrix.
I.e., the mean of element 1,1 of all 40 matrices is returned as element 1,1 in the new, 41st matrix. The same is then done for all elements.
In additionto the mean, I need to do the same for the standard deviation also.
Is there a function in Matlab that can do this? Or do I have to write some kind of a loop??
Thanks, Bryan

采纳的回答

Wayne King
Wayne King 2012-4-3
Yes, concatenate the matrices into a 3-D array and use mean(x,3)
x = randn(4,4,10);
mean(x,3)
and
std(x,[],3)
To concatenate, you can use cat()
x = randn(4,4);
y = randn(4,4);
z = cat(3,x,y);
mean(z,3)
std(z,[],3)

更多回答(1 个)

Sean de Wolski
Sean de Wolski 2012-4-3
Stack your 40 matrices into one three-dimensional matrix, then take the mean along the 3rd dimension
meanMatrix = mean(stackedMatrix,3); %doc mean for more info.
To stack your matrices look at these two FAQs:
  4 个评论
Belinda Finlay
Belinda Finlay 2020-2-17
I am very new to MATLAB and am attempting a do a similar calacuation; however, I am having trouble stacking my matrices (as suggested by Sean), is someone able to guide me.
Thanks
Belinda
Yash Ajay Garje
Yash Ajay Garje 2022-4-18
Hi Belinda,
I do it like this:
A(:,:,1) = ['you could enter your 1st matrix here']
A(:,:,2) = ['you could enter your 2nd matrix here']
A(:,:,3) = ['you could enter your 3rd matrix here']
....
A(:,:,n) = ['you could enter your nth matrix here']
As a result, you would have created a matrix 'A' with the third dimension as 'n'. You could also loop this if required. Hope this helps.
Best,
Yash

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by