Calculate the mean of multiple 3D arrays layer by layer
조회 수: 12 (최근 30일)
이전 댓글 표시
Code is provided below but is inefficient. Is there a more elegant way?
Let's say I have 2 3D arrays: matrix1 and matrix2 both of the same dimension e.g. 10x10x3
How could I calculate the element-average between layer1 of matrix1 and matrix2 and do that for all 3 layers so the final outcome is another 10x10x3 matrix avgMat where avgMat(:, :, 1) is the mean of matrix1(:, :, 1) and matrix2(:, :, 1)?
m1 = cat(3,matrix1(:,:,1),matrix2(:,:,1));
m1=mean(m1,3);
m2 = cat(3,matrix1(:,:,2),matrix2(:,:,2));
m2=mean(m2,3);
m3 = cat(3,matrix1(:,:,3),matrix2(:,:,3));
m3=mean(m3,3);
avgMat=cat(3,m1, m2, m3)
댓글 수: 0
채택된 답변
Ameer Hamza
2020년 12월 21일
편집: Ameer Hamza
2020년 12월 21일
I am not sure why you are concerned about the layers. You are just taking an element-wise average of two matrices. Talking about layers is just making your problem more confusing. The following is equivalent to your code.
avgMat = (matrix1+matrix2)/2
Just in case you are intentionally looking for something confusing
avgMat2 = mean(cat(4, matrix1, matrix2), 4)
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!