Multiply two objects using fimath object
c = mpy(F,a,b)
c = mpy(F,a,b) performs elementwise multiplication
on a and b using fimath object F.
This is helpful in cases when you want to override the fimath objects
of a and b, or if the fimath properties
associated with a and b are
different. The output fi object c has
no local fimath.
a and b can both be fi objects
with the same dimensions unless one is a scalar. If either a or b is
scalar, then c has the dimensions of the nonscalar
object. a and b can also be
doubles, singles, or integers.
In this example, c is the 40-bit product
of a and b with fraction length
30.
a = fi(pi); b = fi(exp(1)); F = fimath('ProductMode','SpecifyPrecision',... 'ProductWordLength',40,'ProductFractionLength',30); c = mpy(F, a, b)
c =
8.5397
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 40
FractionLength: 30
c = mpy(F,a,b) is similar to
a.fimath = F;
b.fimath = F;
c = a .* b
c =
8.5397
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 40
FractionLength: 30
RoundingMethod: nearest
OverflowAction: saturate
ProductMode: SpecifyPrecision
ProductWordLength: 40
ProductFractionLength: 30
SumMode: FullPrecision
but not identical. When you use mpy, the fimath properties
of a and b are not modified,
and the output fi object c has
no local fimath. When you use the syntax c = a .* b,
where a and b have their own fimath objects,
the output fi object c gets
assigned the same fimath object as inputs a and b.
See fimath Rules for Fixed-Point Arithmetic in the Fixed-Point Designer™ User's
Guide for more information.