Mean of many changing "for loop" 3D matrices
조회 수: 3 (최근 30일)
이전 댓글 표시
Hi,
I have 200 3D matrices with same dimensions. I'd like to create one 3d matrix that would contain mean of my 200 matrices by elements → (1,1,1) mean of 200 positions in my 3D matrices and so on ...
Here's my code:
for tt = 1:200;
M = ... (tt) loads the 3D data
end
mean()
Can you help me please?
Thanks.
댓글 수: 3
채택된 답변
dpb
2016년 10월 30일
Well, you could do that (store in a 4D array, that is) but that requires memory for all 200 at once and there's no need when computing a mean to have all the data at once...just accumulate the totals and then divide after the loop is finished...
M = spm_read_vols(spm_vol(files(1).name)); % read the first into accumulator array
for tt = 2:200
M=M+spm_read_vols(spm_vol(files(tt).name)); % accumulate the total
end
M=M/200; % average
추가 답변 (1개)
Kwin
2016년 10월 30일
If you have your matrices all stored in one (four dimensional) matrix, for example M(:,:,:,k) would return the kth 3D matrix, but another order of the index would be fine as well, such as M(k,:,:,:), then, as dpb already mentioned, you can get the mean by simply using:
mean(M,location_of_k)
so for example for M(:,:,:,k), location_of_k=4 and for M(k,:,:,:), location_of_k=1.
참고 항목
카테고리
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!