#### 6.4.1 Comma-Separated Lists Generated from Cell Arrays ¶

As has been mentioned above (see Indexing Cell Arrays), elements of a cell array can be extracted into a comma-separated list with the `{` and `}` operators. By surrounding this list with `[` and `]`, it can be concatenated into an array. For example:

    a = {1, [2, 3], 4, 5, 6};
    b = [a{1:4}]
         ⇒  b =
             1   2   3   4   5

Similarly, it is possible to create a new cell array containing cell elements selected with `{}`. By surrounding the list with ‘`{`’ and ‘`}`’ a new cell array will be created, as the following example illustrates:

    a = {1, rand(2, 2), "three"};
    b = { a{ [1, 3] } }
         ⇒  b =
             {
               [1,1] =  1
               [1,2] = three
             }

Furthermore, cell elements (accessed by `{}`) can be passed directly to a function. The list of elements from the cell array will be passed as an argument list to a given function as if it is called with the elements as individual arguments. The two calls to `printf` in the following example are identical but the latter is simpler and can handle cell arrays of an arbitrary size:

    c = {"GNU", "Octave", "is", "Free", "Software"};
    printf ("%s ", c{1}, c{2}, c{3}, c{4}, c{5});
         ⊣ GNU Octave is Free Software
    printf ("%s ", c{:});
         ⊣ GNU Octave is Free Software

If used on the left-hand side of an assignment, a comma-separated list generated with `{}` can be assigned to. An example is

    in{1} = [10, 20, 30];
    in{2} = inf;
    in{3} = "last";
    in{4} = "first";
    out = cell (4, 1);
    [out{1:3}] = in{1 : 3};
    [out{4:6}] = in{[1, 2, 4]})
         ⇒  out =
            {
               [1,1] =

                  10   20   30

               [2,1] = Inf
               [3,1] = last
               [4,1] =

                  10   20   30

               [5,1] = Inf
               [6,1] = first
            }