- All numbers are by default of class type "double" (unless specifically cast as int etc.).
- Logical values are of class "logical".
- Matlab displays 0 (false) and 1 (true) for logical values, but they are not equal to 0 or 1.
- Casting true or false to a number results in a value of 0 or 1
- This is standard convention, casting a logical (or boolean or bool) to a numeric data type results in either 0 or 1 (false or true) and casting a numeric data type as a logical (or boolean or bool) results in false for zero and true for anything else.
Logical or not logical?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
v = [1,2,3,4,5,6]
v > 4 gives back: 0 0 0 0 1 1
after this I wonder that
v(v > 4) is valid, but v([0,0,0,0,1,1]) is not a valid expression!
Maybe the problem is that 1 is true, not one, therefore the following has to be used:
v(logical([0,0,0,0,1,1]))
OK
but how it is possible that sum(v > 4) is valid and equal to 2?
if 1 is true, than true + true = true !?
0 Kommentare
Antworten (1)
Adam Wyatt
am 31 Mär. 2015
Bearbeitet: Adam Wyatt
am 31 Mär. 2015
Check:
class(1)	% answer = double
class(true)	% answer = logical
When you write
v([0 0 0 0 1 1])
what you are actually saying is [v(0) v(0) v(0) v(0) v(1) v(1)], i.e. you are entering the index locations. For example
v([1 1 1 2 2 1 1 1 2 1 1])	% answer = [1 1 1 2 2 1 1 1 2 1 1];
is perfectly valid!!
You can perform arithmetic with logical values and logic with numeric values, but Matlab automatically casts it as the appropriate class.
Check
class(true + true)	% answer = double
class(v>3)	% answer = logical
class(v.*(v>3))	% answer = double
class(sum(v>3))	% answer = double
logical(5), class(logical(5))	% answer = 1, logical
logical(-5), class(logical(-5))	% answer = 1, logical
logical(0), class(logical(0))	% answer = 0, logical
logical(.1), class(logical(.1))	% answer = 1, logical
Basically logical(~=0)=true and logical(==0)=false, double(true)=1, double(false)=0 but double(1)~=logical(true)!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Argument Definitions 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!