How to create overlapping blocks using a matrix rows ?

7 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 Loops and Conditional Statements 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