matlab / octave use so-called "cell-arrays" for this purpose.
The syntax is similar to arrays, except you use 'braces' ({}) instead of 'brackets' ([]).
e.g.
octave:1> a = [1,2,3], b = [1,2], c = [1,2,3,4]
a = 1 2 3
b = 1 2
c = 1 2 3 4
octave:2> d = {a, b, c}
d = {
[1,1] = 1 2 3
[1,2] = 1 2
[1,3] = 1 2 3 4
}
Similarly, use braces to 'index' a cell-array and get it's contents:
octave:3> d{1}
ans = 1 2 3
Note: You can also index it like a normal array using parentheses (i.e. ()), but this returns the individual cells themselves (i.e. in cell-array form) rather than their contents:
octave:4> d(1)
ans = {
[1,1] = 1 2 3
}
Essentially the 'big' difference between 'normal' (e.g. 'numerical') arrays and 'cell-arrays' is that 'normal' arrays must always contain elements of the same type, whereas in cell-arrays, each element could be anything (including another cell-array).