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

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 = 
    [2]
    []
    []
    [6]
    []

Thanks in advance!

EDIT

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

0 Comments

Timo W

Products

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);
    end
end

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!

Andrei Bobrov

Contact us