필터 지우기
필터 지우기

Loop through many items in an cell array and reshape every 6 items in sequence and put them into matrices each by each

조회 수: 1 (최근 30일)
My cell array "img" has over 3000 matrices in it. I want to reshape every 6 of them from 500*600 to 300,000*1, and then add them together into a 300,000*6 matrix. For now, I only know how to do it manually but processing all of them will eventually cost lots of time. I will be grateful to any looping ideas or hints or helpful links. Thank you.
Q(:,1) = reshape(cell2mat(img(1,1)),[300000 1]);
Q(:,2) = reshape(cell2mat(img(1,2)),[300000 1]);
Q(:,3) = reshape(cell2mat(img(1,3)),[300000 1]);
Q(:,4) = reshape(cell2mat(img(1,4)),[300000 1]);
Q(:,5) = reshape(cell2mat(img(1,5)),[300000 1]);
Q(:,6) = reshape(cell2mat(img(1,6)),[300000 1]);

채택된 답변

Matt J
Matt J 2018년 2월 6일
편집: Matt J 2018년 2월 6일
If speed is important, and if all of your matrices are the same size (500x600), then it was a mistake to split them across a cell array in the first place. You could have just started with a 3D array of size 500x600x3000, which would be much faster. However, if you are stuck with that situation, then you can proceed as follows:
array=cell2mat(img); %avoid this, if possible
array=reshape(array,3e5,6,[]);
Q=sum(array,3);

추가 답변 (0개)

카테고리

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