How to create overlapping blocks using a matrix rows ?

8 ビュー (過去 30 日間)
Sarah A
Sarah A 2019 年 1 月 19 日
コメント済み: Star Strider 2019 年 1 月 20 日
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 件のコメント
Stephan
Stephan 2019 年 1 月 19 日
Are you sure that B looks like you want it to look?
Sarah A
Sarah A 2019 年 1 月 19 日
yes. it supposed to be cell matrix. I editted the question.

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2019 年 1 月 19 日
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 件のコメント
Sarah A
Sarah A 2019 年 1 月 20 日
編集済み: Sarah A 2019 年 1 月 20 日
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 2019 年 1 月 20 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by