Convolution - Maple Help

Online Help

All Products    Maple    MapleSim


SignalProcessing

  

Convolution

  

compute the finite linear convolution of two arrays of samples

 

Calling Sequence

Parameters

Options

Description

Thread Safety

Examples

Compatibility

Calling Sequence

Convolution(A, B)

Parameters

A, B

-

Arrays of real or complex numeric sample values

Options

• 

container : Array, predefined Array for holding result

• 

algorithm : symbol, algorithm to use for computation

Description

• 

The Convolution(A, B) command computes the convolution of the Arrays A and B of length M and N respectively, storing the result in a Array C of length M+N1 and having datatype float[8] or complex[8], which is then returned.

• 

The convolution is defined by the formula

Ck=i=1kAiBki+1

  

for each k from 1 to M+N1, with Aj=0 for M<j and Bj=0 for N<j.

• 

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 an Array of size M+N1 having datatype float[8] or complex[8].

• 

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.

• 

For more information on thread safety, see index/threadsafe.

Examples

withSignalProcessing&colon;

Example 1

ConvolutionArray5&comma;7&comma;Array2&comma;6&comma;10

−10.16.92.70.

(1)

Example 2

aArray1&comma;2&comma;3&comma;datatype=float8

a1.2.3.

(2)

bArray1&comma;1&comma;1&comma;1&comma;datatype=float8

b1.−1.1.−1.

(3)

Convolutiona&comma;b&comma;algorithm=auto

1.1.2.−2.1.−3.

(4)

cArray1..numelemsa+numelemsb1&comma;datatype=float8&colon;

Convolutiona&comma;b&comma;container=c&comma;algorithm=direct

1.1.2.−2.1.−3.

(5)

c

1.1.2.−2.1.−3.

(6)

Example 3

AVectorrow2I&comma;0&comma;5+3I&comma;0&comma;4I

A2I05+3I04I

(7)

BVectorrow7&comma;3+10I&comma;92I&comma;1

B−73+10I92I1

(8)

C1ConvolutionA&comma;B&comma;algorithm=fft

C1−14.+7.I16.0000000000000+17.I−19.34.I−13.+58.I51.11.I−35.+15.0000000000000I8.+36.I0.+4.00000000000000I

(9)

C2`~`roundC1

C2−14.+7.I16.+17.I−19.34.I−13.+58.I51.11.I−35.+15.I8.+36.I0.+4.I

(10)

Compatibility

• 

The SignalProcessing[Convolution] command was introduced in Maple 17.

• 

For more information on Maple 17 changes, see Updates in Maple 17.

• 

The SignalProcessing[Convolution] command was updated in Maple 2020.

• 

The A, B parameter was updated in Maple 2020.

• 

The algorithm option was introduced in Maple 2020.

• 

For more information on Maple 2020 changes, see Updates in Maple 2020.

See Also

SignalProcessing[AutoCorrelation]

SignalProcessing[CrossCorrelation]