Generating combination of matrix with 3 elements

1 view (last 30 days)
I want to optimally generate a 100 matrix, of size MxN using the combination of 3 elements (0,1,2) and save them into seperate mat files. Can someone please help. I dont want to generate the matrix randomly.
  3 Comments
Jan
Jan on 16 Feb 2022
Edited: Jan on 16 Feb 2022
I don't get it: Why 100 matrices? What kind of combinations do you mean? If they are not random, what procedure is wanted instead?
perms(0:2)
ans = 6×3
2 1 0 2 0 1 1 2 0 1 0 2 0 2 1 0 1 2
And now?
By the way: This is not twitter: no hash before the tags.
Shourya
Shourya on 16 Feb 2022
@David Hill @Jan I am sorry about that. I want to generate 100 mat files in more optimal way when it comes to the series of 3 elements in a row. I dont want to repeat the rows in a matrix. My matrix size is 64x12. Is there a way I can do it?

Sign in to comment.

Accepted Answer

David Hill
David Hill on 16 Feb 2022
Edited: David Hill on 16 Feb 2022
So each row of 12 elements can only contain the elements [0 1 2] ? Are there any other contrains? How many times can each element be repeated in each row? Why don't you want to generate the matrix randomly?
A=[repmat([0 1 2],1,12)];
N=zeros(64,12,100);
for m=1:100
for k=1:100
M(k,:)=A(randperm(numel(A),12));
end
M=unique(M,'rows');
N(:,:,m)=M(1:64,:);
end
  5 Comments
David Hill
David Hill on 17 Feb 2022
It is always much easier to code using indexing instead of having a bunch of variables. A 3D matrix (N) can be indexed to obtain all 100 of your 2D matrices.
M1=N(:,:,1);%is a 2D matrix
M2=N(:,:,2);%is a 2D matrix
M3=N(:,:,3);%is a 2D matrix
M100=N(:,:,100);%is a 2D matrix
All 100 of your 2D matrices are stored in a single 3D matrix.
Shourya
Shourya on 15 Mar 2022
Hello David, I shall do that thank you for the solution!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!