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

### Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

# 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]
[]

EDIT

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

## Products

Answer by Andrei Bobrov on 14 Jun 2013
Edited by Andrei Bobrov on 14 Jun 2013
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!