필터 지우기
필터 지우기

Delete rows from Cell Array

조회 수: 38 (최근 30일)
Tyler Smith
Tyler Smith 2016년 10월 7일
답변: Hedayat 2019년 11월 28일
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.

채택된 답변

Walter Roberson
Walter Roberson 2016년 10월 7일
mask = cell2mat(YourCell(:,1)) < 3;
YourCell(mask, :) = [];
  댓글 수: 1
Tyler Smith
Tyler Smith 2016년 10월 7일
Works great! Thanks.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Hedayat
Hedayat 2019년 11월 28일
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}

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam 2016년 10월 7일
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
Walter Roberson
Walter Roberson 2016년 10월 7일
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)

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by