conv

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

Описание

пример

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 чьи kth элемент есть

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)

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

.

Генерация кода GPU
Сгенерируйте код CUDA ® для графических процессоров NVIDIA ® с помощью GPU Coder™

.

См. также

| | | | | (Signal Processing Toolbox)

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