SignalProcessing - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Science and Engineering : Signal Processing : Convolution and Correlation Computations : SignalProcessing/Convolution

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.I4.00000000000000I

(9)

C2`~`roundC1

C2−14.+7.I16.+17.I−19.34.I−13.+58.I51.11.I−35.+15.I8.+36.I4.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]