MATLAB Answers

How to represent a set of matrices into a single cell?

조회 수: 4(최근 30일)
SM
SM 2020년 7월 13일
댓글: SM 2020년 7월 13일
My problem is as follows:
a=4;
b=4;
A=round((30-10).*rand(a,b) + 10);
B=round((100-40).*rand(a,b) + 40);
C=round((250-80).*rand(a,b) + 80);
D=round((80-20).*rand(a,b) + 20);
E=cell(a,b);
for i=1:a
for j=1:b
E{i,j}=[A(i,j) B(i,j) C(i,j) D(i,j)];
end
end
Is there any simple and short ways instead of using loop or any other unnecessary lines?

채택된 답변

madhan ravi
madhan ravi 2020년 7월 13일
E = num2cell([A(:), B(:), C(:), D(:)], 2);
E = reshape(E, a, b)

추가 답변(1개)

David Hill
David Hill 2020년 7월 13일
I would keep them all in a single matrix and then form matrix E (a*b X 4) where each row would hold the cell information of your orginal code.
a=4;b=4;c=[30,100,250,80];d=[10,40,80,20];
for k=1:4
A(:,:,k)=round((c(1)-d(1))*rand(a,b)+d(1));
end
B=permute(A,[2,1,3]);
E=reshape(B(:),a*b,[]);

Community Treasure Hunt

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

Start Hunting!

Translated by