How to create overlapping blocks using a matrix rows ?
    4 views (last 30 days)
  
       Show older comments
    
Hello,
Suppose that we have the matrix A where:
A=[0 1 0 0 1 1 0 1 0 1 0 1 0]
now, we want to create 10 blocks  where each block contains four bits and put it in the cell matrix B where:
B= {[0,1,0,0] [1,0,0,1] [0,0,1,1] [0,1,1,0] [1,1,0,1] [1,0,1,0] [0,1,0,1] ...
    [1,0,1,0] [0,1,0,1] [1,0,1,0] }
As you can see, each block is resulted by shifting a sliding window (of size four) by one bit each time, for example:
% the sequence 01001 will gives: 
% [0,1,0,0] and [1,0,0,1]
So how I can implement that?
2 Comments
Accepted Answer
  Star Strider
      
      
 on 19 Jan 2019
        Try this: 
A=[0 1 0 0 1 1 0 1 0 1 0 1 0];
S = hankel(A, [0 1 1 1]);
S = S(1:10,:);
B = mat2cell(S, ones(1,size(S,1)), size(S,2))';
If you prefer a loop: 
L = 4;
for k1 = 1:numel(A)-L
    S(k1,:) = A(k1:k1+L-1);
end
B = mat2cell(S, ones(1,size(S,1)), size(S,2))';
B{:}                                                           % Display Result (Delete Later)
7 Comments
More Answers (0)
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

