how to write Binary table in simple way ?

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

 Réponse acceptée

Walter Roberson
Walter Roberson le 12 Sep 2015

0 votes

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 commentaires

Henry Buck
Henry Buck le 12 Sep 2015
Modifié(e) : Henry Buck le 12 Sep 2015
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 le 12 Sep 2015
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 le 12 Sep 2015
Modifié(e) : Walter Roberson le 12 Sep 2015
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 le 12 Sep 2015
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 le 12 Sep 2015
Modifié(e) : Walter Roberson le 13 Sep 2015
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 le 12 Sep 2015
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 le 13 Sep 2015
Modifié(e) : Walter Roberson le 13 Sep 2015
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 le 13 Sep 2015
Modifié(e) : Walter Roberson le 13 Sep 2015
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 le 14 Sep 2015
Modifié(e) : Walter Roberson le 16 Sep 2015
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 le 28 Juil 2019
That code is redundant: just assigning into table() is enough without needing to build that tab variable.

Connectez-vous pour commenter.

Plus de réponses (1)

Pierre Bulens
Pierre Bulens le 28 Juil 2019

0 votes

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

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by