Boolean Algebra Toolbox is a small set of functions for easy generation of boolean nbc and gray sequences for sets of boolean variables.
[X1 X2...]=NBC(N) will generate a table of Natural Binary Code where the output is a set of bool-objects.
[X1 X2 X3]=NBC(3) yields:
» [x1 x2 x3]=nbc(3)
x1 =
0101 0101
x2 =
0011 0011
x3 =
0000 1111
and BGRAY(3) yields:
» [x1 x2 x3]=grayc(3)
x1 =
0110 0110
x2 =
0011 1100
x3 =
0000 1111
The constructor for the bool-class works as this:
» x=bool([1 inf 0 -1 0 nan])
x =
1101 01
of course, the constructor can also have a bool object as an argument.
B2H(X) is a function which converts a binary vector to hex string (length(X)=2^n is required).
The operators used are
+ : or
| : or
* : and
& : and
~ : not
' : not
/ : xor
you can use inequalities as well:
< > <= >= == ~=
some functions used by the bool class:
b2d : "bool" to decimal
b2h : "bool" to hex
display : display object
double : convert to double array
flip : flip the entire boolean object string
flip4 : flips the overall nibble position
flip4i : flips the bit positions for each nibble
flip8 : same as flip4 but for bytes
flip8i : same as flip4i but for bytes
horzcat : bit string concatenation, works with mixed objects (as [0 x1 1 nan x2])
length : length of the bit-string/bool-object
size : size of object in bits, nibbles, bytes, words, etc... depending on structure.
subsasgn : assign with indicies
subsref : pick out bits from the object string with indicies (subscripted reference).
Last but not least, the truth-table function which displays the truth-table for a boolean function with its set of variables. For instance:
» [x1 x2 x3]=nbc(3);
» func=x1'*x2+x3'/x1+x1*x2'*x3;
» btab(func,x1,x2,x3)
+-------------+----------+
| x1 x2 x3 | func(*) |
+-------------+----------+
| 0 0 0 | 1 |
| 1 0 0 | 0 |
| 0 1 0 | 1 |
| 1 1 0 | 0 |
| 0 0 1 | 0 |
| 1 0 1 | 1 |
| 0 1 1 | 1 |
| 1 1 1 | 1 |
+-------------+----------+
»
I know that there might be some strange stuff goin on with the order (little/big endian a.s.o.), which is one of the reasons I implemented the flip-functions.
Please mail me for suggestions of if you encounter any problems!
More toolboxes can be found at:
http://www.etek.chalmers.se/~e8rasmus/eng/matlab_programs.html |