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

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 12 Sep. 2015

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Pierre Bulens
Pierre Bulens am 28 Jul. 2019

0 Stimmen

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

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by