File Exchange

image thumbnail

CARTPROD: Cartesian product of multiple sets

version (712 Bytes) by David Fass
Returns a matrix containing the cartesian product of multiple input sets.


Updated 16 Jul 2004

No License

CARTPROD Cartesian product of multiple sets. (The cartesian product of multiple input sets is a larger set containing every ordered combination of the input set elements. See example below.)

X = CARTPROD(A,B,C,...) returns the cartesian product of the sets A,B,C, etc, where A,B,C, are numerical vectors.

Example: A = [-1 -3 -5];
B = [10 11];
C = [0 1];

X = cartprod(A,B,C)
X =

-5 10 0
-3 10 0
-1 10 0
-5 11 0
-3 11 0
-1 11 0
-5 10 1
-3 10 1
-1 10 1
-5 11 1
-3 11 1
-1 11 1

This function requires IND2SUBVECT, also available (I hope) on the MathWorks File Exchange site.

Cite As

David Fass (2021). CARTPROD: Cartesian product of multiple sets (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (10)

Zhe Li

The program automatically sorts input sets, which is probably not a good idea -- users can do this themselves.

Hideki Kawakatsu

hello, very nice function that is doing almost what I need excepted that cartprod does not respect the order of the list of data. For example, A is [-1 -3 -5] but the results starts from -5 rather than -1.

roads to nowhere


Hi, the file does not work Matlab gives me the following error message :
Undefined function or method 'ind2subVect' for input
arguments of type 'double'.
What i have to do please help me.


I need to use the cartesian product

Mehrdad Alipour

I need to make a cartesian roduct of a vector for variable dimension but i cant find a code for this purpose. can somebody help me please?!!


I made a slight change to this file. I replaced your varargin with a cell array, in which each row is a vector. This might also be useful for other people when they don't know how many vectors need to be combined.

Norbert Zbroniec

Jadran Dobric

Thanks for the m file, it was exact that for what i was searching

Nguyen Tat Duc Chinh

This m file work well on my problem in Communication toolbox to generate random noise. Thanks so much David Fass

MATLAB Release Compatibility
Created with R13
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired: SETPROD

Community Treasure Hunt

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

Start Hunting!