help with the resolution of the problem

good, I previously had a binary sequence and my purpose was the creation of substrings of various lengths, eg length 4: Sequence
*1(1), 0(2), 1(3), 1(4), 0(5), 0(6), 1(7), 0(8), 0(9), 1(10), 1(11), 1(12),
1(13), 0(14), 0(15), 0(16), 1(17), 1(18), 1(19), 0(20)*
_Substrings_
*01: 1(01), 0(02), 1(03), 1(04) -> [1,0,1,1],
02: 1(01), 1(03), 0(05), 1(07) -> [1,1,0,1],
03: 1(01), 1(04), 1(07), 1(10) -> [1,1,1,1],
04: 1(01), 0(05), 0(09), 1(13) -> [1,0,0,1],
05: 1(01), 0(06), 1(11), 0(16) -> [1,0,1,0],
06: 1(01), 1(07), 1(13), 1(19) -> [1,1,1,1],
07: 0(02), 1(03), 1(04), 0(05) -> [0,1,1,0],
08: 0(02), 1(04), 0(06), 0(08) -> [0,1,0,0],
09: 0(02), 0(05), 0(08), 1(11) -> [0,0,0,1],
10: 0(02), 0(06), 1(10), 0(14) -> [0,0,1,0],
11: 0(02), 1(07), 1(12), 1(17) -> [0,1,1,1],
12: 0(02), 0(08), 0(14), 0(20) -> [0,0,0,0],
13: 1(03), 1(04), 0(05), 0(06) -> [1,1,0,0],
14: 1(03), 0(05), 1(07), 0(09) -> [1,0,1,0],
15: 1(03), 0(06), 0(09), 1(12) -> [1,0,0,1],
16: 1(03), 1(07), 1(11), 0(15) -> [1,1,1,0],
17: 1(03), 0(08), 1(13), 1(18) -> [1,0,1,1],
18: 1(04), 0(05), 0(06), 1(07) -> [1,0,0,1],
19: 1(04), 0(06), 0(08), 1(10) -> [1,0,0,1],
20: 1(04), 1(07), 1(10), 1(13) -> [1,1,1,1],
21: 1(04), 0(08), 1(12), 0(16) -> [1,0,1,0],
22: 1(04), 0(09), 0(14), 1(19) -> [1,0,0,1],
23: 0(05), 0(06), 1(07), 0(08) -> [0,0,1,0],
24: 0(05), 1(07), 0(09), 1(11) -> [0,1,0,1],
25: 0(05), 0(08), 1(11), 0(14) -> [0,0,1,0],
26: 0(05), 0(09), 1(13), 1(17) -> [0,0,1,1],
27: 0(05), 1(10), 0(15), 0(20) -> [0,1,0,0],
28: 0(06), 1(07), 0(08), 0(09) -> [0,1,0,0],
29: 0(06), 0(08), 1(10), 1(12) -> [0,0,1,1],
30: 0(06), 0(09), 1(12), 0(15) -> [0,0,1,0],
31: 0(06), 1(10), 0(14), 1(18) -> [0,1,0,1],
32: 1(07), 0(08), 0(09), 1(10) -> [1,0,0,1],
33: 1(07), 0(09), 1(11), 1(13) -> [1,0,1,1],
34: 1(07), 1(10), 1(13), 0(16) -> [1,1,1,0],
35: 1(07), 1(11), 0(15), 1(19) -> [1,1,0,1],
36: 0(08), 0(09), 1(10), 1(11) -> [0,0,1,1],
37: 0(08), 1(10), 1(12), 0(14) -> [0,1,1,0],
38: 0(08), 1(11), 0(14), 1(17) -> [0,1,0,1],
39: 0(08), 1(12), 0(16), 0(20) -> [0,1,0,0],
40: 0(09), 1(10), 1(11), 1(12) -> [0,1,1,1],
41: 0(09), 1(11), 1(13), 0(15) -> [0,1,1,0],
42: 0(09), 1(12), 0(15), 1(18) -> [0,1,0,1],
43: 1(10), 1(11), 1(12), 1(13) -> [1,1,1,1],
44: 1(10), 1(12), 0(14), 0(16) -> [1,1,0,0],
45: 1(10), 1(13), 0(16), 1(19) -> [1,1,0,1],
46: 1(11), 1(12), 1(13), 0(14) -> [1,1,1,0],
47: 1(11), 1(13), 0(15), 1(17) -> [1,1,0,1],
48: 1(11), 0(14), 1(17), 0(20) -> [1,0,1,0],
49: 1(12), 1(13), 0(14), 0(15) -> [1,1,0,0],
50: 1(12), 0(14), 0(16), 1(18) -> [1,0,0,1],
51: 1(13), 0(14), 0(15), 0(16) -> [1,0,0,0],
52: 1(13), 0(15), 1(17), 1(19) -> [1,0,1,1],
53: 0(14), 0(15), 0(16), 1(17) -> [0,0,0,1],
54: 0(14), 0(16), 1(18), 0(20) -> [0,0,1,0],
55: 0(15), 0(16), 1(17), 1(18) -> [0,0,1,1],
56: 0(16), 1(17), 1(18), 1(19) -> [0,1,1,1],
57: 1(17), 1(18), 1(19), 0(20) -> [1,1,1,0],*
using the following code
if true
% code
N = 20;
n = 4;
A = hankel(1:N-n+1,N-n+1:N);
k = 0:n-1;
c = ceil((N - A(:,end) + 1)/k(end));
i2 = cumsum(c);
i1 = i2 - c + 1;
idx = zeros(i2(end),n);
for jj = 1:N-n+1
idx(i1(jj):i2(jj),:) = bsxfun(@plus,A(jj,:),(0:c(jj)-1)'*k);
end
[j1,j2,j2] = unique(s(idx),'rows')
out = [j1, histc(j2,1:max(j2))/i2(end)]; % This row corrected
end
and at the end get a count of the times to repeat each pattern and their relative frequency:
*0 0 0 0------ 161697-- 0,0606515378844711
0 0 0 1------ 163593-- 0,0613627156789197
0 0 1 0------ 164201-- 0,0615907726931733
0 0 1 1------ 166680-- 0,0625206301575394
0 1 0 0------ 164105-- 0,0615547636909227
0 1 0 1------ 166501-- 0,0624534883720930
0 1 1 0------ 167099-- 0,0626777944486122
0 1 1 1------ 168835-- 0,0633289572393098
1 0 0 0------ 164086-- 0,0615476369092273
1 0 0 1------ 166963-- 0,0626267816954239
1 0 1 0------ 166931-- 0,0626147786946737
1 0 1 1------ 169470-- 0,0635671417854464
1 1 0 0------ 166622-- 0,0624988747186797
1 1 0 1------ 169326-- 0,0635131282820705
1 1 1 0------ 169251-- 0,0634849962490623
1 1 1 1------ 170640-- 0,0640060015003751*
The problem that arises is that when I processed this way I only processes some 4000 data and need to process many more. I have 4GB of RAM and Matlab 2012. What I thought is this: Assign each patron an integer:
*0 0 0 0------ 1
0 0 0 1-------2
0 0 1 0-------3
0 0 1 1-------4
0 1 0 0-------5
0 1 0 1-------6
0 1 1 0-------7
0 1 1 1-------8
1 0 0 0-------9
1 0 0 1-------10
1 0 1 0-------11
1 0 1 1-------12
1 1 0 0-------13
1 1 0 1-------14
1 1 1 0-------15
1 1 1 1-------16*
and set as a counter to assign the number of times to repeat that integer. In this way perhaps get as many data processing. thank you very much Can anyone help me do this processing, since otherwise the large number of data means that no processing occurs

7 Comments

I think I've made the change in format, with bold, insertion of code and italics. Can you tell me if it is possible what indicated in the post?
to convert the binary string to an integer could apply binvec2dec , but from there, as would conduct the count of substrings of length 4? As serious for long substrings 5,6, ... 20? I would serve to process about 170000 raw data to appear " out of memory "? Many thanks
FRANCISCO
FRANCISCO on 30 Oct 2013
Edited: FRANCISCO on 30 Oct 2013
any solution? as I can not fix it
How does this differ from your previous question on apparently the same topic? Do you want this question worked on or do you want the previous question worked on?
Sorry I confused. I point the instructions I have given in the previous and delete it. It's because I do not know how to do it
Can anyone help me realize this algorithm for the conversion and counting? thank you very much

Sign in to comment.

Answers (0)

Categories

Products

Asked:

on 30 Oct 2013

Commented:

on 31 Oct 2013

Community Treasure Hunt

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

Start Hunting!