How to create a binary matrix
조회 수: 37 (최근 30일)
이전 댓글 표시
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
답변 (5개)
Jan
2011년 7월 20일
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
Friedrich
2011년 7월 20일
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
Walter Roberson
2011년 7월 20일
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
2011년 7월 20일
Well, in _popular_ computer architectures; bit-sliced and bit-addressable architectures still have their purposes.
Sean de Wolski
2011년 7월 20일
To get logical binary values either use:
x = logical(x)
or any conditional operator e.g.
x = x>7
x = x==11;
댓글 수: 0
Image Analyst
2017년 5월 22일
편집: Image Analyst
2017년 5월 22일
Use true():
t = true(numRows, numColumns);
"whos" will show you it's one byte per element, like the other solutions.
>> t = true(4,5)
t =
4×5 logical array
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>> whos t
Name Size Bytes Class Attributes
t 4x5 20 logical
To get one bit per element, instead of one byte per element, I think you'll have to pack them together yourself.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!