SUBSTRINGS CREATION WITH DIFFERENT ORDER

1 vue (au cours des 30 derniers jours)
FRANCISCO
FRANCISCO le 21 Nov 2013
Commenté : Azzi Abdelmalek le 21 Nov 2013
I wish to estimate substrings of length 4-13, a primary secuence currently about 150,000 binary numbers. How to create the substrings be as follows:
let's assume we have the following sequence (numbers in parentheses indicate the order):
s = 0 (1) 1 (2) 1 (3) 0 (4) 1 (5) 1 (6) 0 (7) 1 (8) 0 (9) 0 (10) 0 (11) 1 (12)
substrings of length 4 would be:
0 (1) 1 (2) 1 (3) 0 (4)
1 (2) 1 (3) 0 (4) 1 (5)
1 (3) 0 (4) 1 (5) 1 (6)
0 (4) 1 (5) 1 (6) 0 (7)
1 (5) 1 (6) 0 (7) 1 (8)
1 (6) 0 (7) 1 (8) 0 (9)
0 (7) 1 (8) 0 (9) 0 (10)
1 (8) 0 (9) 0 (10) 0 (11)
0 (9) 0 (10) 0 (11) 1 (12) .
Now would do the same with the substrings of length 5 After substrings of length 6 ..... up length 13
Many thanks

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 21 Nov 2013
Modifié(e) : Azzi Abdelmalek le 21 Nov 2013
s =[ 0 1 1 0 1 1 0 1 0 0 0 1 ];
n=6;
m=numel(s)-n+1;
A=zeros(m,n);
idx=cell2mat(arrayfun(@(x) x:x+n-1,(1:m)','un',0));
out=s(idx)
  4 commentaires
FRANCISCO
FRANCISCO le 21 Nov 2013
okei, for example we have the following sequence:
  s = [0 0 0 0 0 0 0 0 0 1];
I apply the code you created to create substrings of length 4:
if true
% code
n=4;
m=numel(s)-n+1;
A=zeros(m,n);
idx=cell2mat(arrayfun(@(x) x:x+n-1,(1:m)','un',0));
out=s(idx)
end
and the result of "out" is:
      0 0 0 0
      0 0 0 0
      0 0 0 0
      0 0 0 0
      0 0 0 0
      0 0 0 0
      0 0 0 1
we see that the pattern [0 0 0 0] has been repeated 6 times. How would that "out" out:
[0 0 0 0] | 6
[0 0 0 1] | 1
Thank you very much.
Azzi Abdelmalek
Azzi Abdelmalek le 21 Nov 2013
s =[ 0 1 1 0 1 1 0 1 0 0 0 1 ];
n=4;
m=numel(s)-n+1;
A=zeros(m,n);
idx=cell2mat(arrayfun(@(x) x:x+n-1,(1:m)','un',0))
out=s(idx)
[a,b,c]=unique(out,'rows','stable')
freq=accumarray(c,ones(size(c)))
[a freq]

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 21 Nov 2013
Modifié(e) : Andrei Bobrov le 21 Nov 2013
s = [0 1 1 0 1 1 0 1 0 0 0 1 ];
n = numel(s);
k=4:n;
out = cell(n-3,1);
for jj = 1:numel(k)
p = s(hankel(1:k(jj),k(jj):n)');
[p2,~,ii] = unique(p,'rows');
out{jj} = [p2, accumarray(ii,1)];
end

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by