|
Calling Sequence
|
|
Convolution( A, B, options )
|
|
Parameters
|
|
A
|
-
|
Array, Vector, or list of real or complex numeric sample values for first signal
|
B
|
-
|
Array, Vector, or list of real or complex numeric sample values for second signal
|
|
|
|
|
Options
|
|
•
|
algorithm : keyword auto, direct, or fft for the algorithm to use for computation; default is direct
|
•
|
container : Array or Vector, predefined container for holding result
|
•
|
shape : keyword full, same, or valid for the shape of the convolution; default is full
|
•
|
subtype : keyword Array, Vector, Vector[column], or Vector[row] for the subtype of the output; default is Array
|
|
|
Description
|
|
•
|
The Convolution(A, B) command computes the full convolution of the signals A and B of length and respectively, storing the result in a container C of length and having datatype float[8] or complex[8], which is then returned.
|
•
|
The full convolution is defined by the formula
|
|
for each from to , with for and for .
|
•
|
For all choices of shape, the full convolution of size is computed. When shape=same, the full convolution is trimmed on both sides so that the result is of length . Note that when the number of elements to be trimmed is odd, one more element will be trimmed from the left side than the right. When shape=valid, the final convolution will be found in a similar manner to the shape=same case, but the value of the size will be when , and otherwise. The valid convolution effectively discards the elements which involve padded zeros for the signals.
|
•
|
Before the code performing the computation runs, A and B are converted to datatype float[8] (if the values are all real-valued) or complex[8] (if all the values are complex-valued, but not all real-valued) if they do not have that datatype already. For this reason, it is most efficient if A and B have one of these datatypes beforehand.
|
•
|
If either A or B is an rtable that is not a 1-D Array, it is accepted by the command and converted to an Array. Should this not be possible, an error will be thrown.
|
•
|
If the container=C option is provided, then the results are put into C and C is returned. With this option, no additional memory is allocated to store the result. The container must be a 1-D rtable of appropriate size having datatype float[8] (for two real signals) or complex[8] (for one or two complex signals).
|
•
|
The algorithm=name option can be used to specify the algorithm used for computing the convolution. Supported algorithms:
|
–
|
auto - automatically choose the fastest algorithm based on input.
|
–
|
direct - use direct convolution formula for computation. This is the default.
|
–
|
fft - use an algorithm based on the Fast Fourier Transform (FFT). This is a much faster algorithm than the direct formula for large samples, but numerical roundoff can cause significant numerical artifacts, especially when the result has a large dynamic range.
|
|
|
Thread Safety
|
|
•
|
The SignalProcessing[Convolution] command is thread-safe as of Maple 17.
|
|
|
Examples
|
|
>
|
|
|
Example 1
|
|
>
|
|
|
|
Example 2
|
|
>
|
|
>
|
|
>
|
|
>
|
|
>
|
|
|
|
Example 3
|
|
>
|
|
>
|
|
>
|
|
| (9) |
| (10) |
|
|
Example 4
|
|
>
|
|
>
|
|
>
|
|
| (13) |
>
|
|
| (14) |
>
|
|
|
|
|
Compatibility
|
|
•
|
The SignalProcessing[Convolution] command was introduced in Maple 17.
|
•
|
The A and B parameters were updated in Maple 2020.
|
•
|
The algorithm option was introduced in Maple 2020.
|
•
|
The SignalProcessing[Convolution] command was updated in Maple 2023.
|
•
|
The shape and subtype options were introduced in Maple 2023.
|
|
|
|