2012-11-19 6 views
1

J'ai un tableau de cellules 4902x1 qui contient des chaînes telles que Bleu. ou vert. Je veux remplacer un certain nombre de ces chaînes par un autre mot. Comment cela peut-il être fait dans MATLAB?rechercher et remplacer des mots dans un tableau de cellules

Par exemple trouver

Blue. 
Red. 
Green. 

Remplacer par:

Colour. 

Edit:

strArray = {'green.','black.'}; 
strMatch = strmatch(strArray, Book2); 
strArray(strMatch(str,strArray)) = {'colour'}; 
+0

strArray dans votre exemple n'est pas un tableau de cellules, donc je pense que c'est pourquoi il échoue. – robince

Répondre

2

Si vous avez un réseau de cellules de chaînes (dans votre exemple strArray n'est pas un réseau de cellules) Je définirais une petite fonction pour faire la logique puis utilisez cellfun:

function y = changecolor(str) 
if(strcmpi('green',str) || strcmpi('blue',str)) 
    y = 'color'; 
else 
    y = str; 
end 

Ensuite, vous peut obtenir votre nouveau tableau avec:

changed_array = cellfun(@changecolor, strCellArray,'Uniform',false) 
+0

hmmm 'Erreur lors de l'utilisation de ==> cellfun Non scalaire dans la sortie Uniforme, à l'index 1, sortie 1. Régler 'UniformOutput' sur false .' –

+0

voir edit ... simplement définir 'UniformOutput' sur false – robince

+0

Fonctionne maintenant, Merci! –

2

Pourquoi ne pas utiliser

strArray(strmatch(str,strArray)) = {'newString'}; 

Dans cet exemple, vous devez définir la variable str sur la chaîne que vous souhaitez rechercher, par exemple. str = 'vert'.

EDIT: Mise à jour pour refléter vos modifications à la publication d'origine.

strArray = {'green.','black.'}; 
strMatch = strmatch(strArray, Book2); % This line is unnecessary and if Book2 is not a string variable it will not work 

strArray(strMatch(str,strArray)) = {'colour'}; % For this line to work you need declare a string value for the variable str, e.g. str='green.' 
+0

J'ai essayé ce que vous avez dit mais je deviens Index dépasse les dimensions de la matrice . J'ai mis une édition montrant ce que j'ai essayé. –

+0

Cela fonctionnera si vous avez un tableau de cellules comme vous l'avez d'abord indiqué. Changez votre strArray en un tableau de cellules en utilisant le {} plutôt que []. – jerad

+0

Nah ne fonctionne toujours pas - 'Error using ==> subsindex La fonction 'subsindex' n'est pas définie pour les valeurs de class 'cell'.' –

Questions connexes