Delete rows from Cell Array
64 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Tyler Smith
am 7 Okt. 2016
Beantwortet: Hedayat
am 28 Nov. 2019
I have a cell array as seen in the image. I want to delete the rows of the cell array where the first column is less than 3. Thanks.

0 Kommentare
Akzeptierte Antwort
Weitere Antworten (2)
Hedayat
am 28 Nov. 2019
If you want to delete more than one rows of cell you can ...
a= cell(5,5)
a =
5×5 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}
{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}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
a([2,3],:)=[]
a =
3×5 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}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
0 Kommentare
Asad (Mehrzad) Khoddam
am 7 Okt. 2016
a is the cell array
b=find(cellfun(@(x) size(x,1)<3,a)==1);
while ~isempty(b)
a(b(1))=[];
b=b-1;
b(1)=[];
end
1 Kommentar
Walter Roberson
am 7 Okt. 2016
No, this checks for vectors less than 3 elements anywhere in the cell array.
The == 1 is redundant because the places that satisfy <3 will already return 1 and the other places will return 0 and find() automatically checks for non-zero. The code there is sort of like
find((x < 3) == true)
when you could just use
find(x < 3)
Siehe auch
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!