MATLAB Answers

Timo W

get specific elements from all non-empty cells

Asked by Timo W
on 12 Jun 2013

Hello everyone!

I have a pretty simple task, but I cannot come up with a simple solution. All my ideas seem way to complicated. Here is what I want to do:

I have a cell array C containing vectors of equal length or empty cells:

C = {[1 2 3];
     [5 6 7];

Now I want to get a specific element, for example the second element, of each cell and write it into a new variable A. If the cell is empty I just want to write empty in the corresponding cell in A:

So if I wanted to get the second element I would expect A to look like this:

A = 

Thanks in advance!


Well, maybe there is not such an obvious solution for this. So I'll just stick to an 'if' and a 'for' loop.


1 Answer

Answer by Andrei Bobrov
on 14 Jun 2013
Edited by Andrei Bobrov
on 14 Jun 2013
 Accepted answer

A = cell(size(A));
ii = ~cellfun('isempty',C);
A(ii) = cellfun(@(x)x(2),C(ii),'un',0);

or use loop for..end

A = cell(size(C));
for jj = 1:numel(C)
    if ~isempty(C{jj})
        A{jj} = C{jj}(2);

  1 Comment

Timo W
on 16 Jun 2013

I thought there might be a nice "one line solution". But maybe such a solution does not exist. Thanks though!

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!