필터 지우기
필터 지우기

generate a matrix from given Bit combinations

조회 수: 1 (최근 30일)
barath manoharan
barath manoharan 2023년 6월 5일
편집: Akira Agata 2023년 6월 5일
Iam having a list of all possible bit combinations
For Example : if it is 3bit there will be (2)^3 - 1 combinations which is 7 combinations given below
A = [1,0,1 ; 1,1,1 ; 1,1,0 ; 0,1,1 ; 0,1,0 ; 0,0,1 ; 0,1,1]
Here aij used in below paragraph means ith row and jth column in B matrix
Now i want to generate a matrix based on visiting bit pattern for example for the above given bit combinations we need to generate a 7*7 matrix (because of 7 combinations), where first we will visit bit combination 1,0,1 and then 1,1,1 so cell a12 is 1 and other cells in 1st row is zero. In a12 - 1 represents 1,0,1 and 2 represents 1,1,1 ; which means if we visit 1,1,1 immediately after visiting 1,0,1 then a12 is 1 and remaining cells in that same row is zero because we dont want jumping from 1st combination(1,0,1) to (0,1,1) which is a14 is 0. so i need a matrix like given below
B = [ 0 1 0 0 0 0 0 ; 0 0 1 0 0 0 0 ; 0 0 0 1 0 0 0 ; 0 0 0 0 1 0 0 ; 0 0 0 0 0 1 0 ; 0 0 0 0 0 0 1 ; 0 0 0 0 0 0 0]
Here a12 is 1(since we first visit 1,0,1 and then 1,1,1) , a23 is 1 (we first visit 1,1,1 and then 1,1,0) similarly a34 is 1 , a45 is 1 , a56 is 1 , a67 is 1 and a78 is 1 (not possible so last row(7th) all zero row).
NOTE : i need a generalized code where i can generate a matrix based on bit combinations for example 4 bit means (2)^4 - 1 which is 15 combinations so 15*15 matrix with same logic above(a12 - 1,a23 - 1,a34 - 1 so on..). Thank you in advance and hope this explanation is understandable

채택된 답변

Akira Agata
Akira Agata 2023년 6월 5일
편집: Akira Agata 2023년 6월 5일
How about the following solution?
% Number of bits (-> please change this value)
Nbit = 3;
% Number of combination
Ncmb = 2^Nbit - 1;
% Create all the combinations of bits
c = dec2bin(1:Ncmb);
c = cellstr(c);
c = split(c, '');
c = c(:, 2:end-1);
A = str2double(c);
% Create B
B = triu(ones(Ncmb), 1) - triu(ones(Ncmb), 2);
% Show the result
disp(A)
0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
disp(B)
0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by