MATLAB: Accessing 1 by n array from a cell array

arraycelldata

The output of the following code is the cell array poh. Is there a way to instead access the first subarray {'poh',3,4.56} through a similar command and commands to find, for example, its size?
a=[{'poh',3,4.56},{'v',5}]
a{1}

Best Answer

  • The problem is that the square brackets [] concatenate the two cells to produce:
    a =
    1×5 cell array
    {'poh'} {[3.0000e+000]} {[4.5600e+000]} {'v'} {[5.0000e+000]}
    If you replace them with curly braces {}, ‘a’ becomes:
    a =
    1×2 cell array
    {1×3 cell} {1×2 cell}
    and the result of
    a{1}
    is:
    ans =
    1×3 cell array
    {'poh'} {[3.0000e+000]} {[4.5600e+000]}
    as desired.
    With that, you can then get:
    Out = cellfun(@size, a, 'Uni',0)
    Out{1}
    Out{2}
    producing:
    ans =
    1 3
    ans =
    1 2
    EDIT — (12 Oct 2020 at 13:23)
    Added example results.
    .