Remove specific entry in a cell array
조회 수: 214 (최근 30일)
이전 댓글 표시
I want to remove an entry in a cell array if it is equal to something specifically. Explained in this example:
animals={'cat', 'dog', 'mouse', 'horse'};
"animals" is being redefined in a loop, and if it happens to be redefined with 'dog' as an entry, I want to remove it. So I want
animals={'cat', 'mouse', 'horse'};
I don't want to replace 'dog' with a blank (''), I want to remove that entry entirely and keep the array tight (i.e. reduce the dimensions from 4x1 to 3x1 in this case).
Thanks
댓글 수: 0
채택된 답변
James Tursa
2018년 1월 31일
animals(ismember(animals,'dog')) = [];
댓글 수: 2
Nischal Amin
2022년 10월 10일
This does not work for me.
X = ('Cat', 'Dog', 'Tiger');
X = X(ismember(X,'Tiger')) == []
X should be 'Cat', 'Dog', Empty cell
Basically, I don't want the X index to change. I just want to remove Tiger. So, when I do unique(X)...it displays only Cat and Dog.
Jan
2022년 10월 11일
X = ('Cat', 'Dog', 'Tiger') is no valid Matlab syntax. For a cell array you need curly braces, not parentheses.
X(ismember(X,'Tiger')) == [] compares the cell {'Tiger'} with the empty matrix. It does not set anything to the empty cell.
X = {'Cat', 'Dog', 'Tiger'};
X(ismember(X,'Tiger')) = {''}
% Or faster:
X = {'Cat', 'Dog', 'Tiger'};
X(strcmp(X, 'Tiger')) = {''}
추가 답변 (2개)
Akira Agata
2018년 1월 31일
Another way to do it:
idx = strcmp(animals,'dog');
animals(idx) = [];
댓글 수: 1
Jan
2018년 1월 31일
animals = {'cat', 'dog', 'mouse', 'horse'};
animals = setdiff(animals, {'dog'})
This would allow to remove multiple elements at once.
댓글 수: 7
RITESH KUMAR
2019년 9월 18일
can we write element number at place of dog. it is at 2nd place. can i write 2.
참고 항목
카테고리
Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!