Convolution and polynomial multiplication of fi
objects
c = conv(a,b)
c = conv(a,b,'shape')
c = conv(a,b)
outputs the convolution of
input vectors a
and b
, at least
one of which must be a fi
object.
c = conv(a,b,'shape')
returns a subsection
of the convolution, as specified by the shape
parameter:
full
— Returns the full
convolution. This option is the default shape.
same
— Returns the central
part of the convolution that is the same size as input vector a
.
valid
— Returns only those
parts of the convolution that the function computes without zero-padded
edges. In this case, the length of output vector c
is max(length(a)-max(0,length(b)-1),
0)
.
The fimath
properties associated with the
inputs determine the numerictype
properties of
output fi
object c
:
If either a
or b
has
a local fimath
object, conv
uses
that fimath
object to compute intermediate quantities
and determine the numerictype
properties of c
.
If neither a
nor b
have
an attached fimath, conv
uses the default fimath
to compute intermediate quantities and determine the numerictype
properties
of c
.
If either input is a built-in data type, conv
casts
it into a fi
object using best-precision rules
before the performing the convolution operation.
The output fi
object c
always
uses the default fimath.
Refer to the MATLAB® conv
reference
page for more information on the convolution algorithm.
The following example illustrates the convolution of a 22-sample sequence with a 16-tap FIR filter.
x
is a 22-sample sequence of signed
values with a word length of 16 bits and a fraction length of 15 bits.
h
is the 16 tap FIR filter.
u = (pi/4)*[1 1 1 -1 -1 -1 1 -1 -1 1 -1]; x = fi(kron(u,[1 1])); h = firls(15, [0 .1 .2 .5]*2, [1 1 0 0]);
Because x
is a fi
object,
you do not need to cast h
into a fi
object
before performing the convolution operation. The conv
function
does so using best-precision scaling.
Finally, use the conv
function to convolve
the two vectors:
y = conv(x,h);
The operation results in a signed fi
object y
with
a word length of 36 bits and a fraction length of 31 bits. The default fimath
properties
associated with the inputs determine the numerictype
of
the output. The output does not have a local fimath
.