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

Learn moreOpportunities for recent engineering grads.

Apply Today
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.

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

## 0 Comments