フィルターのクリア

Return to the start of a loop

13 ビュー (過去 30 日間)
googo
googo 2013 年 4 月 16 日
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].

採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 4 月 16 日
編集済み: Andrei Bobrov 2013 年 4 月 16 日
str = 'abcad' ;
n=3;
out = str( hankel(1:n,n:numel(str)) );
without hankel
out = str( bsxfun(@plus,1:n,(0:numel(str) - n)') )
with while-loop
g = 1:n;
out = [];
while g(end) <= numel(str)
out = [out;str(g)];
g = g + 1;
end
  3 件のコメント
Andrei Bobrov
Andrei Bobrov 2013 年 4 月 16 日
added variant with while-loop
googo
googo 2013 年 4 月 16 日
Thank's, I'll try this too.

サインインしてコメントする。

その他の回答 (2 件)

Yao Li
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 件のコメント
Yao Li
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
googo
googo 2013 年 4 月 16 日
編集済み: googo 2013 年 4 月 16 日
Thank's. I did like this:
[~,index] = unique(t,'first','rows');
s = t(sort(index),1:n);

サインインしてコメントする。


Soheyl Khajehpour-Tadavani
Soheyl Khajehpour-Tadavani 2020 年 9 月 23 日
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

カテゴリ

Help Center および File ExchangeWorkspace Variables and MAT-Files についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by