Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

How to create a binary matrix

Asked by snake eyes on 20 Jul 2011

I want to make matrix whose each element's size will be 1 bit, i.e, it will be a binary matrix.How can I do it?

Thanks in advance.

0 Comments

snake eyes

Tags

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon on 20 Jul 2011

There is not BIT type in Matlab. Usually binary arrays are stored as LOGICAL, which are equivalent to UINT8. E.g.:

B = rand(16, 16) > 0.8;
whos('B')

Now you can pack this in blocks of 8 elements to a UINT8 array:

T = 2 .^ (0:7).';
B8 = transpose(reshape(B, 8, []));
BitArray = uint8(B8 * T);

0 Comments

Jan Simon
Answer by Friedrich on 20 Jul 2011

Hi,

this is not possible in MATLAB and in other languages too like C or C++. In modern computer architectures, a byte is the smallest addressable unit of memory. To pack multiple bits into a byte requires applying extra bit-shift operations. At the compiler level, it's a trade off of memory vs. speed requirements (and in high-performance software, those extra bit-shift operations can add up and slow down the application needlessly).

3 Comments

snake eyes on 20 Jul 2011

C has a feature known as 'bit field' where I can specify custom length.
however,thanks for the reply.

Walter Roberson on 20 Jul 2011

C does not specify whether bit-fields start from the beginning or the end of a word, and C permits but does not require bit-fields to cross words. In C, arrays of bit-fields are arrays of words: the "packed" attribute possibility was removed from the C language before C was standardized. There is thus no binary matrix in C, just arrays of structs whose members are bit fields.

Walter Roberson on 20 Jul 2011

Well, in _popular_ computer architectures; bit-sliced and bit-addressable architectures still have their purposes.

Friedrich
Answer by Sean de Wolski on 20 Jul 2011

To get logical binary values either use:

x = logical(x)

or any conditional operator e.g.

x = x>7
x = x==11;

0 Comments

Sean de Wolski

Contact us