Documentation

This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

conv

Convolution and polynomial multiplication

Syntax

``w = conv(u,v)``
``w = conv(u,v,shape)``

Description

example

````w = conv(u,v)` returns the convolution of vectors `u` and `v`. If `u` and `v` are vectors of polynomial coefficients, convolving them is equivalent to multiplying the two polynomials.```

example

````w = conv(u,v,shape)` returns a subsection of the convolution, as specified by `shape`. For example, `conv(u,v,'same')` returns only the central part of the convolution, the same size as `u`, and `conv(u,v,'valid')` returns only the part of the convolution computed without the zero-padded edges.```

Examples

collapse all

Create vectors `u` and `v` containing the coefficients of the polynomials and .

```u = [1 0 1]; v = [2 7];```

Use convolution to multiply the polynomials.

`w = conv(u,v)`
```w = 2 7 2 7 ```

`w` contains the polynomial coefficients for .

Create two vectors and convolve them.

```u = [1 1 1]; v = [1 1 0 0 0 1 1]; w = conv(u,v)```
```w = 1 2 2 1 0 1 2 2 1 ```

The length of `w` is `length(u)+length(v)-1`, which in this example is `9`.

Create two vectors. Find the central part of the convolution of `u` and `v` that is the same size as `u`.

```u = [-1 2 3 -2 0 1 2]; v = [2 4 -1 1]; w = conv(u,v,'same')```
```w = 15 5 -9 7 6 7 -1 ```

`w` has a length of `7`. The full convolution would be of length `length(u)+length(v)-1`, which in this example would be 10.

Input Arguments

collapse all

Input vectors, specified as either row or column vectors. The vectors `u` and `v` can be different lengths or data types.

When `u` or `v` are of type `single`, then the output is of type `single`. Otherwise, `conv` converts inputs to type `double` and returns type `double`.

Data Types: `double` | `single` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical`
Complex Number Support: Yes

Subsection of the convolution, specified as `'full'`, `'same'`, or `'valid'`.

 `'full'` Full convolution (default). `'same'` Central part of the convolution of the same size as `u`. `'valid'` Only those parts of the convolution that are computed without the zero-padded edges. Using this option, `length(w)` is `max(length(u)-length(v)+1,0)`, except when `length(v)` is zero. If ```length(v) = 0```, then `length(w) = length(u)`.

collapse all

Convolution

The convolution of two vectors, `u` and `v`, represents the area of overlap under the points as `v` slides across `u`. Algebraically, convolution is the same operation as multiplying polynomials whose coefficients are the elements of `u` and `v`.

Let `m = length(u)` and `n = length(v)` . Then `w` is the vector of length `m+n-1` whose `k`th element is

`$w\left(k\right)=\sum _{j}u\left(j\right)v\left(k-j+1\right).$`

The sum is over all the values of `j` that lead to legal subscripts for `u(j)` and `v(k-j+1)`, specifically `j` `=` `max(1,k+1-n):1:min(k,m)`. When `m` `=` `n`, this gives

```w(1) = u(1)*v(1) w(2) = u(1)*v(2)+u(2)*v(1) w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1) ... w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1) ... w(2*n-1) = u(n)*v(n)```