Finding strings in a 21 x 1 cell array.

1 view (last 30 days)
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.

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 13 Oct 2015
Edited: Mohammad Abouali on 13 Oct 2015
newsequence = {'CGT'
'GAC'
'AGT'
'CCT'
'CTC'
'CTT'
'TAC'
'CGA'
'AAG'
'GGA'
'AGA'
'ATA'
'AAA'
'GTG'
'GCG'
'TGA'
'TGC'
'ATT'
'ACG'
'CCT'
'GCA'};
mask=strcmpi(newsequence ,'TAC');
rows=find(mask)
rows =
7
or you could combine both command in one as:
rows=find( strcmpi(newsequence ,'TAC') )

More Answers (2)

Star Strider
Star Strider on 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 Comments
JE
JE on 13 Oct 2015
Undefined function 'find' for input arguments of type 'cell'.
I tried this already. :(
Star Strider
Star Strider on 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

Sign in to comment.


Image Analyst
Image Analyst on 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)

Categories

Find more on Graphics Object Properties in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!