Hi there,
1. How to create Binary code (like this one below) in a simple way?
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
2. how to print only the relevant rows like:
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
only the rows that has 2 bits that equal to 1.....
Thanks,
Henry

 채택된 답변

Walter Roberson
Walter Roberson 2015년 9월 12일

0 개 추천

What happens if you use dec2bin(13) - '0' ?
A way to calculate how many values are set in a row is to sum() the row.
You should also investigate logical indexing

댓글 수: 12

Henry Buck
Henry Buck 2015년 9월 12일
편집: Henry Buck 2015년 9월 12일
I want to print only the rows that have 2 bits equal to 1. in case 13 it has 3 bits equal to one......
Walter Roberson
Walter Roberson 2015년 9월 12일
You no longer need to be able to print the complete table?
Does dec2bin(13) - '0' look like an example of a row you might want?
Henry Buck
Henry Buck 2015년 9월 12일
편집: Walter Roberson 2015년 9월 12일
no,
I want to print itlike thise one:
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
Walter Roberson
Walter Roberson 2015년 9월 12일
Does dec2bin(5)-'0' look like an example of a row you might want? Does dec2bin(6)-'0' look like an example of a row you might want?
Henry Buck
Henry Buck 2015년 9월 12일
편집: Walter Roberson 2015년 9월 13일
yes,
dec2bin(5) = 0101
dec2bin(6) = 0110
for table of 4 bits - it is 16 possibilities.
only those:
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
I want to print/
Thanks,
Henry
Walter Roberson
Walter Roberson 2015년 9월 12일
So if you had dec2bin(N)-'0' for some integer N, how would you test if two bits were set? See my hint about sum()
Henry Buck
Henry Buck 2015년 9월 13일
편집: Walter Roberson 2015년 9월 13일
what wrong with this one to create the binary table ?
It seems that is does not work:
n=4;
for i=0:(2^n-1)
table= dec2bin(i,n)
end
Walter Roberson
Walter Roberson 2015년 9월 13일
편집: Walter Roberson 2015년 9월 13일
You are writing over "table" in each iteration of the loop.
n=4;
for i=0:(2^n-1)
table(i+1,:) = dec2bin(i,n)
end
Henry Buck
Henry Buck 2015년 9월 14일
편집: Walter Roberson 2015년 9월 16일
Hi,
This one does not work as I want.
The resilt start like this:
table =
0000
table =
0000
0001
table =
0000
0001
0010
And end like this:
table =
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
16 results.... for each one, a new line fromthat tble is added.
thanks,
Henry
If you do not want the intermediate results printed out, put a semi-colon on the end of the assignment. You currently have
table(i+1,:) = dec2bin(i,n)
so change that to
table(i+1,:) = dec2bin(i,n);
Then you will only get the final result of 16 rows. When you have that, you can search it to find the rows that have 2 bits set.
Here's how you can take care of that problem Mr.Henry Buck.
n=4; tab=[];
for i=0:(2^n-1)
table(i+1,:) = dec2bin(i,n);
tab = [tab;table(i+1,:)];
end
table = tab
the result is this
Walter Roberson
Walter Roberson 2019년 7월 28일
That code is redundant: just assigning into table() is enough without needing to build that tab variable.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Pierre Bulens
Pierre Bulens 2019년 7월 28일

0 개 추천

dec2bin function gives the table :
binarytable.PNG
to get the rows containing 2 bits equal to 1, use the sum function and logical indexing
rows with 2 ones.PNG
the sum function gives the number of 1s in each row,
the '== 2' part selects the wanted rows

카테고리

도움말 센터File Exchange에서 Data Type Conversion에 대해 자세히 알아보기

태그

질문:

2015년 9월 12일

댓글:

2019년 7월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by