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

2 vues (au cours des 30 derniers jours)
SM
SM le 13 Juil 2020
Commenté : SM le 13 Juil 2020
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?

Réponse acceptée

madhan ravi
madhan ravi le 13 Juil 2020
E = num2cell([A(:), B(:), C(:), D(:)], 2);
E = reshape(E, a, b)

Plus de réponses (1)

David Hill
David Hill le 13 Juil 2020
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,[]);

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by