Bit-slicing function for integer matrices

function E = bitreslice(A,b_old, b_new, echo_on) Re-packages bits of a matrix of integers.
265 Downloads
Updated 12 Dec 2011

View License

function E = bitreslice(A,b_old, b_new, echo_on)

Author: Damon Bradley

Purpose: A is an [M by N] matrix of integers. Implicit is each element's
representaiton in binary, which is b_old bits wide. Matrix E is output
which is an [M by L] matrix of integers, with the bits of A concatenated
column-wise and re-split into b_new bit-wide elements. The number of bits
per row, b_old*N must be evenly divisible by b_new to work.

Inputs:
A - An M by N matrix of unsigned integers
b_old - Number of bits to represent A, should be based on maximum value
b_new - New number of bits to slice each bit-concatenated row of A
echo_on - Choose 1 to display underlying bit representation. Don't specify otherwise

Outputs:
E - A new matrix, same number of rows as A, but whose elements
a new set of integers based on the concatenation of ALL bits
for every row, repackaged as elements "b_new" bits wide.
Usage Example:
Re arrange the 4-bit elements of matrix A into a new matrix with 3-bit
elements. The product of the number of columns of A and how many bits
each element is originally represented with must be evenly divisible by
b_new, the new number of bits the output matrix elements are represented
with.

A =

1 4 7
2 3 5
3 3 0

B =

'0001' '0100' '0111'
'0010' '0011' '0101'
'0011' '0011' '0000'

C =

000101000111
001000110101
001100110000

D =

'000' '101' '000' '111'
'001' '000' '110' '101'
'001' '100' '110' '000'

E =

0 5 0 7
1 0 6 5
1 4 6 0

Cite As

Damon Bradley (2026). Bit-slicing function for integer matrices (https://www.mathworks.com/matlabcentral/fileexchange/34173-bit-slicing-function-for-integer-matrices), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Version Published Release Notes
1.3.0.0

Fixed another comment

1.1.0.0

Just fixed a comment typo.

1.0.0.0