How to create overlapping blocks using a matrix rows ?

4 visualizaciones (últimos 30 días)
Sarah A
Sarah A el 19 de En. de 2019
Comentada: Star Strider el 20 de En. de 2019
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 comentarios
Stephan
Stephan el 19 de En. de 2019
Are you sure that B looks like you want it to look?
Sarah A
Sarah A el 19 de En. de 2019
yes. it supposed to be cell matrix. I editted the question.

Iniciar sesión para comentar.

Respuesta aceptada

Star Strider
Star Strider el 19 de En. de 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 comentarios
Sarah A
Sarah A el 20 de En. de 2019
Editada: Sarah A el 20 de En. de 2019
This is the final form, I wasnt do it without your help so Thank you :)
matrix = [ 0 0 0 0 1 1 0 1 0 1 1 1 1; 0 1 0 1 1 1 0 0 1 1 1 0 1]
for i=1:size(matrix,1)
A=matrix(i,:);
S = hankel(A, [0 1 1 1]);
L = 4; %sliding window size
S = S(1:(size(A,2)-(L-1)),:);
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))';
C{i}=B;
end
and the output will be:
C(1,1):
[0,0,0,0][0,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,1][0,1,1,1][1,1,1,1]
C(1,2):
[0,1,0,1][1,0,1,1][0,1,1,1][1,1,1,0][1,1,0,0][1,0,0,1][0,0,1,1][0,1,1,1][1,1,1,0][1,1,0,1]
Star Strider
Star Strider el 20 de En. de 2019
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by