conv

Свертка и умножение полиномов

Синтаксис

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

Описание

пример

w = conv(u,v) возвращает свертку векторов u и v. Если u и v являются векторами полиномиальных коэффициентов, применение операцию свертки к ним эквивалентно умножению этих двух полиномов.

пример

w = conv(u,v,shape) возвращает часть свертки, как задано shape. Например, conv(u,v,'same') возвращает только центральную часть свертки, тот же размер как u, и conv(u,v,'valid') возвращает только часть свертки, вычисленной без дополненных нулем ребер.

Примеры

свернуть все

Создать векторы u и v, которые состоят из коэффициентов многочленов x2+1 и 2x+7.

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

Используйте свертку, чтобы умножить полиномы.

w = conv(u,v)
w = 1×4

     2     7     2     7

w содержит полиномиальные коэффициенты для 2x3+7x2+2x+7.

Создать два вектора и применить операцию свертки.

u = [1 1 1];
v = [1 1 0 0 0 1 1];
w = conv(u,v)
w = 1×9

     1     2     2     1     0     1     2     2     1

Длиной w является length(u)+length(v)-1, который в этом примере является 9.

Создайте два вектора. Найдите центральную часть свертки u и v, который одного размера как u.

u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,'same')
w = 1×7

    15     5    -9     7     6     7    -1

w имеет длину 7. Полная свертка имела бы длину length(u)+length(v)-1, который в этом примере будет 10.

Входные параметры

свернуть все

Входные векторы, заданные или как строка или как вектор-столбцы. Векторы u и v могут быть различными длинами или типами данных.

Когда u или v имеют тип single, затем вывод имеет тип single. В противном случае conv преобразовывает входные параметры, чтобы ввести double и возвращается, вводят double.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Часть свертки, заданная как 'full', 'same' или 'valid'.

'full'

Полная свертка (значение по умолчанию).

'same'

Центральная часть свертки, одного размера как u.

'valid'

Только те части свертки, которые вычисляются без дополненных нулем ребер. Используя эту опцию, length(w) является max(length(u)-length(v)+1,0), кроме тех случаев, когда length(v) является нулем. Если length(v) = 0, то length(w) = length(u).

Больше о

свернуть все

Свертка

Свертка двух векторов u и v представляет собой область перекрытия под точками, так как v скользит по u. Алгебраически свертка является такой же операцией, как и умножение полиномов, коэффициенты которых являются элементами u и v.

Предположим m = length(u) и n = length(v). Тогда w - вектор длины m+n-1, чей k-й элемент есть

w(k)=ju(j)v(kj+1).

Сумма по всем значениям j, которые приводят к легальным индексам для u(j) и v(k-j+1), в частности j = max(1,k+1-n):1:min(k,m). Когда m = n, это дает

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)

Расширенные возможности

Смотрите также

| | | | |

Представлено до R2006a