Remove specific entry in a cell array

191 visualizzazioni (ultimi 30 giorni)
ZigzS
ZigzS il 31 Gen 2018
Commentato: Jan il 11 Ott 2022
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

Risposta accettata

James Tursa
James Tursa il 31 Gen 2018
animals(ismember(animals,'dog')) = [];
  2 Commenti
Nischal Amin
Nischal Amin il 10 Ott 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
Jan il 11 Ott 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')) = {''}
X = 1×3 cell array
{'Cat'} {'Dog'} {0×0 char}
% Or faster:
X = {'Cat', 'Dog', 'Tiger'};
X(strcmp(X, 'Tiger')) = {''}
X = 1×3 cell array
{'Cat'} {'Dog'} {0×0 char}

Accedi per commentare.

Più risposte (2)

Akira Agata
Akira Agata il 31 Gen 2018
Another way to do it:
idx = strcmp(animals,'dog');
animals(idx) = [];
  1 Commento
Jan
Jan il 31 Gen 2018
If only one string has to be removed, this is the fastest solution. +1

Accedi per commentare.


Jan
Jan il 31 Gen 2018
animals = {'cat', 'dog', 'mouse', 'horse'};
animals = setdiff(animals, {'dog'})
This would allow to remove multiple elements at once.
  7 Commenti
RITESH KUMAR
RITESH KUMAR il 18 Set 2019
can we write element number at place of dog. it is at 2nd place. can i write 2.

Accedi per commentare.

Categorie

Scopri di più su Startup and Shutdown 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