필터 지우기
필터 지우기

average sections of matrix

조회 수: 11 (최근 30일)
Luke McLellan
Luke McLellan 2018년 7월 12일
댓글: Star Strider 2018년 7월 17일
Hi there, I am trying to average sections of a matrix at a time. The matrix is 31x109. Initially I am trying to build another matrix from the average of the first 25 elements increments in the first row, then the second 25(beginning from the the last element in the previous average); this will later be applied to all rows. My current attempt is
for f = 1:[1:25:108]; Ave_PpIX(f,:) = PpIX_Dose_Matrix(1,1:f); end
ave_PpIX = mean(Ave_PpIX);
Am idea of the matrix is: [ave(1-25) ave(13-38) ave(25-50)...]
If anyone has had any previous experience doing this I would really appreciate any help.
Thnaks Luke
  댓글 수: 1
Jan
Jan 2018년 7월 12일
Why 108 in the loop, not 109? What should happen with the last chunk, which has less then 25 elements?
1:[a:b:c] is the same as 1:a.

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2018년 7월 12일
I am not certain that I understand the result you want.
Try this:
M = rand(31, 109); % Original Matrix
Cols = [ones(1, fix(size(M,2)/25))*25 rem(size(M,2),25)]; % Create Column Sub-Sections
C = mat2cell(M, size(M,1), Cols); % Cell Array Of Sub-Sections
Cmean = cellfun(@(x)mean(x,2), C, 'Uni',0); % Row Means For Each Section
Mmean = cell2mat(Cmean); % Convert To Double Matrix Of Row Mean Vectors For Each Sub-Section
  댓글 수: 9
Luke McLellan
Luke McLellan 2018년 7월 17일
I do believe that you are my knight in shining algorithm but I will have to return to the code next week now
Star Strider
Star Strider 2018년 7월 17일
Thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jan
Jan 2018년 7월 12일
편집: Jan 2018년 7월 13일
PpIX_Dose_Matrix = rand(31, 109);
n = size(PpIX_Dose_Matrix, 2);
k = 0;
for f = 1:24:n
k = k + 1;
Ave_PpIX(k) = mean(PpIX_Dose_Matrix(1, f:f+24));
end
This can fail, when f+25 is outside the existing range. A test with if can catch this:
if f+25 <= n
...
  댓글 수: 3
Jan
Jan 2018년 7월 13일
for f = 1:12:n
k = k + 1;
Ave_PpIX(k) = mean(PpIX_Dose_Matrix(1, f:f+24));
end
Luke McLellan
Luke McLellan 2018년 7월 16일
Thanks again for your comments

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by