How to generate an *M^N* by *N* integer matrix consiting of all possible length N row vectors whose elements are between 0 and M-1?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I need to generate an M^N by N matrix consisting of all possible length N (N>=2) row vectors whose elements are integer numbers between 0 and M-1 (M>=2). Since there are a total of M^N such row vectors, the matrix has M^N rows, each corresponding to one particular row vector. I also want the row vectors in an "incremental" order, for example, when M = 2 and N = 3, I want to generate the following matrix:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
In my code, a typical value of M would be 16 and N would be 3. So my matrix would be a large matrix. Does anybody know how to generate such a matrix in an efficient way?
Thanks
0 commentaires
Réponse acceptée
Jan
le 8 Avr 2013
There are several corresponding submissions in the FileExchange. When speed matters, use FEX: VChooseKRO. When you do not want to compile C-code, try FEX: combinator.
Using UINT8 arrays will save a lot of RAM and processing time.
2 commentaires
Plus de réponses (1)
Walter Roberson
le 5 Avr 2013
https://groups.google.com/group/comp.lang.c/browse_thread/thread/d98842738fa27a55/2f6d5ff877063de1
with the adjustment by Chris Torek.
I don't think I have posted the MATLAB code, but it is not difficult to write.
Voir également
Catégories
En savoir plus sur Logical 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!