Hi! I think my problem is very simple. I have some boolean expressions in my code, which the results will always be 1 or 0 (true or false). Here are some examples:
data=data+(-1*(~mat(i)&&mat(j)&&mat(k)))||(~mat(i)&&~mat(j));
or
data=data+(~mat(i));
I have to convert these logicals 1s and 0s to int values. I've tried using abs() but it is not working.
Btw, I'm on R2015b.
I appreciate the help.
Thanks!

 채택된 답변

Ced
Ced 2016년 3월 8일

3 개 추천

You can usually use logicals and numerical values interchangeably in matlab (for most operations), no need to convert them. But If you do, you can cast them e.g. using int8
a = logical(0); % a is a logical
b = a; % b is a logical
c = int8(a); % c is an int8
The same goes for other datatypes (int16, int32, double, ... ), see datatypes for details.

댓글 수: 2

Actually this did not work for me ... which may be a bug in Matlab.
I have a logical array: E = uint8(zeros( ..., )); vcl = edge (A, 'canny', ...); vv = uint8(vcl); E = E + uint8(vcl);
when i do imtool(vcl), i see the pixels with edges. when i do imtool(E) it is all zero. and also imtool(vv) is all zero. I changed uint8 to double and it works correctly. possible bug?
Stephen23
Stephen23 2021년 12월 21일
편집: Stephen23 2021년 12월 21일
"I changed uint8 to double and it works correctly. possible bug?"
Not at all. MATLAB assumes that UINT8 image data ranges from 0-255 (i.e. the entire 8-bit range) whereas DOUBLE image data ranges from 0-1 (i.e. normalized). This is clearly explained in the MATLAB documentation:

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Kehn Wu
Kehn Wu 2021년 12월 21일

0 개 추천

You could try sum()
Marcelo Moraes
Marcelo Moraes 2022년 1월 10일

0 개 추천

In HDC Coder you can use the block
HDL CODER => LOGIC AND BIT OPERATIONS => BIT CONCAT

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2016년 3월 8일

답변:

2022년 1월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by