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

3 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Image Analyst
Image Analyst il 5 Dic 2020
Modificato: Image Analyst il 5 Dic 2020
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 Commenti
Image Analyst
Image Analyst il 6 Dic 2020
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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by