Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

conv

Convolution et multiplication polynomiale

Description

exemple

w = conv(u,v) renvoie la convolution des vecteurs u et v. Si u et v sont des vecteurs des coefficients polynomiaux, le fait de les convoluer revient à multiplier les deux polynômes.

exemple

w = conv(u,v,shape) renvoie une sous-section de la convolution, telle que spécifiée par shape. Par exemple, conv(u,v,'same') renvoie uniquement la partie centrale de la convolution, de la même taille que u ; et conv(u,v,'valid') renvoie uniquement la partie de la convolution calculée sans les zéros aux extrémités.

Exemples

réduire tout

Créez des vecteurs u et v contenant les coefficients des polynômes x2+1 et 2x+7.

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

Utilisez la convolution pour multiplier les polynômes.

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

     2     7     2     7

w contient les coefficients polynomiaux pour 2x3+7x2+2x+7.

Créez deux vecteurs et convoluez-les.

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

La longueur de w est length(u)+length(v)-1, qui dans cet exemple correspond à 9.

Créez deux vecteurs. Trouvez la partie centrale de la convolution de u et v ayant la même taille que 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 a une longueur de 7. La convolution complète serait d’une longueur de length(u)+length(v)-1, qui dans cet exemple correspondrait à 10.

Arguments d'entrée

réduire tout

Les vecteurs en entrée sont spécifiés en tant que vecteurs ligne ou colonne. Les vecteurs u et v peuvent avoir des longueurs ou des types de données différents.

Lorsque u ou v sont de type single, la sortie est de type single. À défaut, conv convertit les entrées vers le type double et renvoie le type double.

Types de données : double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Support des nombres complexes : Oui

Sous-section de la convolution, spécifiée en tant que 'full', 'same' ou 'valid'.

'full'

Convolution totale (par défaut).

'same'

La partie centrale de la convolution est de la même taille que u.

'valid'

Uniquement les parties de la convolution qui sont calculées sans les zéros aux extrémités. Avec cette option, length(w) est max(length(u)-length(v)+1,0), sauf lorsque length(v) est nulle. Si length(v) = 0, alors length(w) = length(u).

En savoir plus

réduire tout

La convolution

La convolution des deux vecteurs u et v représente la zone de superposition des points lorsque v glisse sur u. D’un point de vue algébrique, la convolution est une opération identique à la multiplication des polynômes dont les coefficients sont les éléments de u et v.

Prenons m = length(u) et n = length(v). Dans ce cas, w est leur vecteur de longueur m+n-1 dont le kème élément est

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

La somme est supérieure à toutes les valeurs de j qui produisent des indices valides pour u(j) et v(k-j+1), plus précisément j = max(1,k+1-n):1:min(k,m). Lorsque m = n, cela donne

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)

Capacités étendues

Génération de code GPU
Générez du code CUDA® pour les GPU NVIDIA® avec GPU Coder™.

Historique des versions

Introduit avant R2006a

Voir aussi

| | | | (Signal Processing Toolbox) |