n-fold Cartesian product

9 visualizzazioni (ultimi 30 giorni)
Sundar Aditya
Sundar Aditya il 5 Mag 2016
Commentato: Sundar Aditya il 6 Mag 2016
I need to compute the n-fold Cartesian product of a set, where n is a positive integer determined by some previous code. Is there any way to do this without using nested for-loops? ndgrid seems to be optimal for a fixed n, but I'm unable to find a solution for any general n. Thanks.

Risposta accettata

John D'Errico
John D'Errico il 5 Mag 2016
For example:
S = 1:3;
n = 5;
q = cell(1,5);
s = repmat({S},1,n);
[Q{1:n}] = ndgrid(s{:});
Q = reshape(cat(n,Q{:}),[],n);
I'm not sure if that solution is a trivial one. Trivial is all in the eyes of the beholder anyway. To be honest, I've written a function in one of my toolboxes that does it for me, rather than have to remember this trick when I need it.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by