Clear Filters
Clear Filters

Cell arrays with a vector within a cell within a cell

2 views (last 30 days)
I have a cell array where each element consists of a 1 x 1 cell containing a vector of type double, i.e., C{1,1} contains a vector of length N.
How do I convert the inner cells from 1 x 1 cells into N x 1 cells where the entries correspond to each vector of length N? The N of each vector might be different.
I think the right way to do this is via cellfun but something like
C_out = cellfun(@(C_test) num2cell(C_test{1}), C_in, 'uniform',0);
does not quite get me there.

Accepted Answer

Matt J
Matt J on 9 May 2023
Maybe this is what you mean?
C_in = 1×3 cell array
{3×1 double} {2×1 double} {[6]}
C_out=num2cell(cell2mat( cellfun(@(x) cpad(x,n), C_in,'uni',0) ) )
C_out = 3×3 cell array
{[1]} {[ 4]} {[ 6]} {[2]} {[ 5]} {[NaN]} {[3]} {[NaN]} {[NaN]}
function C=cpad(C,n)

More Answers (2)

Walter Roberson
Walter Roberson on 7 May 2023
cellfun up a num2cell call.
  1 Comment
L'O.G. on 7 May 2023
Edited: L'O.G. on 8 May 2023
What does "cellfun up" mean? I think that's what I tried to do as I mention in my question.

Sign in to comment.

Matt J
Matt J on 9 May 2023
Edited: Matt J on 9 May 2023
Is this what you mean?
C_in = 1×3 cell array
{1×1 cell} {1×1 cell} {1×1 cell}
C_out = 1×3 cell array
{3×1 double} {2×1 double} {[6]}


Find more on Programming in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!