Return to the start of a loop
이전 댓글 표시
Hello,
I'm writing a function which returns the sequences of n requested letters in a string. For example, :
string = 'abcad' , n=3
ans =
abc
bca
cad
Well, my code is :
function s=ngramsFreq(string,n)
k=0;
t = repmat(char(0),length(string)-n+1,n);
for i=1:(length(string)-n)+1
k=k+1;
for j=1:n
for m=k:(k+n)-1
t(i,j)=string(m);
break
end
end
end
s=t;
end
When I'm runing the program for 'abcad', n=3 the function returns:
ngramsFreq('abcad',3)
ans =
aaa
bbb
ccc
I think the problem is in the inside loop:
for m=k:(k+n)-1
t(i,j)=string(m);
break
end
I want it to end after one step and not keep looping. For example After t(1,1)=string(1) go to j=2 and not return to m=1.
Any help with this? thank you very much!
Note: For the meantime, if a sequence is showing twice or more the function will return both sequences or how many there is (for example: 'aaa' will return [aa;aa].
채택된 답변
추가 답변 (2개)
Yao Li
2013년 4월 16일
function s=ngramsFreq(string,n)
k=0;
t = repmat(char(0),length(string)-n+1,n);
for i=1:(length(string)-n)+1
k=k+1;
t(i,1:n)=string(k:1:(k+n)-1);
end
s=t;
end
댓글 수: 7
googo
2013년 4월 16일
Yao Li
2013년 4월 16일
string(m:n:t) means from the mth letter to the tth letter with a increasement (or decreasement) of n
Yao Li
2013년 4월 16일
Why there are c and a since n=2? Is the string='abcabd' or there are two strings, 1st='abc' and 2nd='abd'?
googo
2013년 4월 16일
Yao Li
2013년 4월 16일
You can divide your algorithm to 2 steps: 1st find the specific group of letters. 2nd remove the repeated groups
Soheyl Khajehpour-Tadavani
2020년 9월 23일
0 개 추천
Hi
I am writing a code for calculating a parameter with if clauses. How does the code can return when it does not satisfy my if calculation?
thank you
카테고리
도움말 센터 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!