Remove specific entry in a cell array
    187 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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 commentaires
Réponse acceptée
  James Tursa
      
      
 le 31 Jan 2018
        animals(ismember(animals,'dog')) = [];
2 commentaires
  Nischal Amin
 le 10 Oct 2022
				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
      
      
 le 11 Oct 2022
				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')) = {''}
Plus de réponses (2)
  Akira Agata
    
      
 le 31 Jan 2018
        Another way to do it:
idx = strcmp(animals,'dog');
animals(idx) = [];
1 commentaire
  Jan
      
      
 le 31 Jan 2018
        animals = {'cat', 'dog', 'mouse', 'horse'};
animals = setdiff(animals, {'dog'})
This would allow to remove multiple elements at once.
7 commentaires
  RITESH KUMAR
 le 18 Sep 2019
				can we write element number at place of dog. it is at 2nd place. can i write 2.
Voir également
Catégories
				En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!







