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

Delete a cell by a criterion???

Asked by Thor on 5 Feb 2013

Dear all,

I have a cell array of 31x12x9 and in every cell is a 288x3 structure. I want to delete every cell wich has not the 288x3 structure. So all have x3 but the value 288 is in some cells different and these should be deleted! Thank you in advance!

0 Comments

Thor

Products

No products are associated with this question.

3 Answers

Answer by Conrad on 5 Feb 2013
Accepted answer

Hi Thor, try the following:

    % Create dummy data.
    S = cell(1,2,2);
    l1(288,3).Value = 1; l2(280,3).Value = 1;
    S{1,1,1} = l1; S{1,1,2} = l2; S{1,2,1} = l1; S{1,2,2} = l1;
    K = S(cell2mat(cellfun(@(x) size(x,1), S, 'UniformOutput', false))==288);

Conrad

0 Comments

Conrad
Answer by Youssef KHMOU on 5 Feb 2013

Your cell array is A of size m=31, n=12 , p=9 :

for x=1:m
  for y=1:n
      for z=1:p
            if(size(A{x,y,z},1)~=288 && size(A{x,y,z},2)~=3)
                A{x,y,z}=[];
            end
      end
  end
end

0 Comments

Youssef  KHMOU
Answer by Jan Simon on 5 Feb 2013
Edited by Jan Simon on 5 Feb 2013

If C is your data cell:

C(cellfun('size', C, 1) ~= 288) = {[]};

Here the contents of the not matching cell elements are deleted, but not the cells itself. If you want to delete the cells, the result cannot be a cell array anymore but a cell vector only:

C = C(cellfun('size', C, 1) == 288);

0 Comments

Jan Simon

Contact us