Section: Mathematical Operators
y = a - b
where a and b are n-dimensional arrays of numerical type. In the
first case, the two arguments are the same size, in which case, the
output y is the same size as the inputs, and is the element-wise
difference of a and b. In the second case, either a or b is a scalar,
in which case y is the same size as the larger argument,
and is the difference of the scalar to each element of the other argument.
The type of y depends on the types of a and b using the type
promotion rules. The types are ordered as:
uint8 - unsigned, 8-bit integers range [0,255]
int8 - signed, 8-bit integers [-127,128]
uint16 - unsigned, 16-bit integers [0,65535]
int16 - signed, 16-bit integers [-32768,32767]
uint32 - unsigned, 32-bit integers [0,4294967295]
int32 - signed, 32-bit integers [-2147483648,2147483647]
float - 32-bit floating point
double - 64-bit floating point
complex - 32-bit complex floating point
dcomplex - 64-bit complex floating point
C. Numerical overflow rules are also the same as C.
If a is a scalar, then the output is computed via
On the other hand, if b is a scalar, then the output is computed via
int32 is the default type used for
integer constants (same as in C), hence the output is the
same type:
--> 3 - 8 ans = <int32> - size: [1 1] -5
Next, we use the floating point syntax to force one of the arguments
to be a double, which results in the output being double:
--> 3.1 - 2 ans = <double> - size: [1 1] 1.1
Note that if one of the arguments is complex-valued, the output will be complex also.
--> a = 3 + 4*i a = <complex> - size: [1 1] 3+ 4 i --> b = a - 2.0f b = <complex> - size: [1 1] 1+ 4 i
If a double value is subtracted from a complex, the result is
promoted to dcomplex.
--> b = a - 2.0 b = <dcomplex> - size: [1 1] 1+ 4i
We can also demonstrate the three forms of the subtraction operator. First the element-wise version:
--> a = [1,2;3,4] a = <int32> - size: [2 2] Columns 1 to 2 1 2 3 4 --> b = [2,3;6,7] b = <int32> - size: [2 2] Columns 1 to 2 2 3 6 7 --> c = a - b c = <int32> - size: [2 2] Columns 1 to 2 -1 -1 -3 -3
Then the scalar versions
--> c = a - 1 c = <int32> - size: [2 2] Columns 1 to 2 0 1 2 3 --> c = 1 - b c = <int32> - size: [2 2] Columns 1 to 2 -1 -2 -5 -6