Finding strings in a 21 x 1 cell array.

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.

 채택된 답변

Mohammad Abouali
Mohammad Abouali 2015년 10월 13일
편집: Mohammad Abouali 2015년 10월 13일

2 개 추천

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') )

추가 답변 (2개)

Star Strider
Star Strider 2015년 10월 13일

1 개 추천

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

JE
JE 2015년 10월 13일
Undefined function 'find' for input arguments of type 'cell'.
I tried this already. :(
This looks tortured, but it works:
found = (strfind(newsequence,'TAC'));
found = find(cell2mat(cellfun(@(x)~isempty(x), found, 'Uni',0)))
found =
7

댓글을 달려면 로그인하십시오.

Image Analyst
Image Analyst 2015년 10월 13일

0 개 추천

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)

카테고리

도움말 센터File Exchange에서 General Physics에 대해 자세히 알아보기

질문:

JE
2015년 10월 13일

편집:

2015년 10월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by