Convert logical variable into integer number
149 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Guilherme Roberto
am 8 Mär. 2016
Beantwortet: Marcelo Moraes
am 10 Jan. 2022
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!
0 Kommentare
Akzeptierte Antwort
Ced
am 8 Mär. 2016
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
2 Kommentare
Jim Morgenstern
am 30 Mär. 2017
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
am 21 Dez. 2021
Bearbeitet: Stephen23
am 21 Dez. 2021
"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:
Weitere Antworten (2)
Marcelo Moraes
am 10 Jan. 2022
In HDC Coder you can use the block
HDL CODER => LOGIC AND BIT OPERATIONS => BIT CONCAT
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!