a = b<0

8 visualizzazioni (ultimi 30 giorni)
kale
kale il 22 Gen 2023
Modificato: Voss il 22 Gen 2023
What is the meaning of this line?
...
a = b<0;
c = 3*a;
...
Is a IF condition?

Risposta accettata

Voss
Voss il 22 Gen 2023
Modificato: Voss il 22 Gen 2023
a = b<0;
checks if b is less than 0 and stores the result in a.
If b is a scalar: if b is less than 0, then a will be true; otherwise a will be false.
If b is a non-scalar array: a will be a logical array the same size as b, with each element being true or false, depending on whether the corresponding element in b is less than 0 or not.
Examples:
b = 2;
a = b<0 % false
a = logical
0
b = -2;
a = b<0 % true
a = logical
1
b = 0;
a = b<0 % false
a = logical
0
b = randn(3) % non-scalar array
b = 3×3
0.2296 2.5457 -0.5802 -0.3745 -0.5770 0.2825 -0.8004 0.7450 -1.0347
a = b<0 % 3-by-3 logical array, true where b<0 and false elsewhere
a = 3×3 logical array
0 0 1 1 1 0 1 0 1
Then the next line
c = 3*a;
multiplies a by 3 and stores it in c, so c will be an array the same size as a, with the value 3 where a is true and the value 0 where a is false.
Examples:
b = 2;
a = b<0; % false
c = 3*a
c = 0
b = -2;
a = b<0; % true
c = 3*a
c = 3
b = 0;
a = b<0; % false
c = 3*a
c = 0
b = randn(3) % non-scalar array
b = 3×3
0.0840 0.2037 -0.9633 -0.7413 -1.2592 0.3485 -2.1917 0.0558 -2.0495
a = b<0 % 3-by-3 logical array, true where b<0 and false elsewhere
a = 3×3 logical array
0 0 1 1 1 0 1 0 1
c = 3*a
c = 3×3
0 0 3 3 3 0 3 0 3

Più risposte (1)

Torsten
Torsten il 22 Gen 2023
Modificato: Torsten il 22 Gen 2023
"a" is a logical variable.
It is set to "true" (=1) if b<0, else it is set to "false" (=0).
The next operation c = 3*a works as if "a" was a double variable.
Thus c = 3*1 = 3 if "a" was "true", else c = 3*0 = 0 if "a" was "false".

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by