How can i delete every n-th row in a cell array

I have a cell array like C=cell(10,1). I want to delete every n-th row of the cell and have the result in a cell array with.
I have used
rowstodel=1:10
p(rowstodel(1),:)=[]; % delete first row
However, i want the resulting 9x1 results in a cell array. I have tried using a for loop but i keep getting 'matrix is out of range for deletion'
Thanks

 Accepted Answer

Try this:
C = cell(10,1) % Create a cell array (column vector) of 10 individual cells (empty ones).
whos C
% Delete very 3rd row starting at 1 by setting those rows to null.
% I.e. delete cells 1, 4, 7, and 10
% leaving only 6 cells in the cell array.
C(1:3:end) = []
whos C
you'll see:
C =
10×1 cell array
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
Name Size Bytes Class Attributes
C 10x1 80 cell
C =
6×1 cell array
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
Name Size Bytes Class Attributes
C 6x1 48 cell
See the FAQ:

3 Comments

Hi.Image Analyst. Thank you for this. C(1:3:end) = [] overwrites the original C cell array which i still require to work with. i.e I have a 100 x 1 cell array (and each cell arry is (NX2)) which i need to analyze by excluding each row one at a time. I can exclude each one at a time by assigning a new variable to it but that would be very cumbersome.
e.g
C1=C(2:end,:) % excludes the first row, run analysis on C1
and i have also tried
rowstodel=1:100;
C(rowstodel(1),:)=[]; % deletes the first row but overwrites C to 99x1.
So, i need to get like a new cell array with each row deleted from C. Thanks in advance.
So simply make a copy of it before you delete the rows:
C = cell(10,1) % Create a cell array (column vector) of 10 individual cells (empty ones).
whos C % Has 10 rows and one column. Each element is a cell, which is empty so far.
% Delete very 3rd row starting at 1 by setting those rows to null.
% I.e. delete cells 1, 4, 7, and 10
% leaving only 6 cells in the cell array.
C2 = C; % Make a copy.
% Delete the rows from the copy.
C2(1:3:end) = []
whos C2
Thank you, Image Analyst.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!