Finding strings in a 21 x 1 cell array.
Afficher commentaires plus anciens
I have a cell array that looks like this:newsequence =
'CGT'
'GAC'
'AGT'
'CCT'
'CTC'
'CTT'
'TAC'
'CGA'
'AAG'
'GGA'
'AGA'
'ATA'
'AAA'
'GTG'
'GCG'
'TGA'
'TGC'
'ATT'
'ACG'
'CCT'
'GCA'
I am interested in finding the location of 'TAC'. When I use this function: found=strfind(newsequence,'TAC'); I end up with a cell array with all zeros and a 1 in the 7th row. I want it to display a 7 because that is the location of 'TAC', but I can't seem to figure it out.
Réponse acceptée
Plus de réponses (2)
Star Strider
le 13 Oct 2015
The function is returning a logical array of row indices. To convert it to a numerical value for the actual row number of every matching row, add a call to the find function:
found = find(strfind(newsequence,'TAC'));
I didn’t specifically test this, but it should work.
2 commentaires
JE
le 13 Oct 2015
Star Strider
le 13 Oct 2015
This looks tortured, but it works:
found = (strfind(newsequence,'TAC'));
found = find(cell2mat(cellfun(@(x)~isempty(x), found, 'Uni',0)))
found =
7
Image Analyst
le 13 Oct 2015
Try ismember(). Here I'm using CCT to show what happens if you have the string in more than one row:
ca = {'CGT'
'GAC'
'AGT'
'CCT'
'CTC'
'CTT'
'TAC'
'CGA'
'AAG'
'GGA'
'AGA'
'ATA'
'AAA'
'GTG'
'GCG'
'TGA'
'TGC'
'ATT'
'ACG'
'CCT'
'GCA'}
[ia, ib] = ismember(ca, 'CCT')
rows = find(ia)
Catégories
En savoir plus sur General Physics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!