conv
Convolution et multiplication polynomiale
Description
renvoie la convolution des vecteurs w = conv(u,v)u et v. Si u et v sont des vecteurs des coefficients polynomiaux, le fait de les convoluer revient à multiplier les deux polynômes.
renvoie une sous-section de la convolution, telle que spécifiée par w = conv(u,v,shape)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
Créez des vecteurs u et v contenant les coefficients des polynômes et .
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 .
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
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 |
"valid" | Uniquement les parties de la convolution qui sont calculées sans les zéros aux extrémités. Avec cette option, |
Arguments de sortie
Vecteur résultant de la convolution, renvoyé sous forme de vecteur ligne ou colonne.
En savoir plus
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
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)
En utilisant cette définition, conv calcule la convolution directe de deux vecteurs plutôt que la convolution par FFT.
Capacités étendues
La fonction conv supporte les tall arrays avec les notes d’usage et limitations suivantes :
Les entrées
uetvdoivent être des vecteurs colonne.Si
shapeest"full"(par défaut), seuluouvpeut être un tall array.Si
shapeest"same"ou"valid", alorsvne peut pas être un tall array.
Pour plus d’informations, consultez Tall array.
Notes d’usage et limitations :
S’il est utilisé, l’argument
shapedoit être une constante au moment de la génération de code.Pour les arguments en entrée
uetv:Vous devez spécifier le vecteur en entrée comme étant de taille fixe ou de longueur variable au moment de la génération de code. Seule la première ou la deuxième dimension du vecteur peut être de taille variable. Toutes les autres dimensions doivent être de taille fixe égale à 1.
Les vecteurs en entrée
uetvdoivent avoir la même orientation.
Consultez les notes d’usage et limitations à la section « Génération de code C/C++ ». Les mêmes notes d’usage et limitations s’appliquent à la génération de code GPU.
La fonction conv supporte entièrement les environnements basés sur des threads. Pour plus d’informations, consultez Run MATLAB Functions in Thread-Based Environment.
La fonction conv supporte entièrement les GPU arrays. Pour exécuter la fonction sur un GPU, spécifiez les données en entrée en tant que gpuArray (Parallel Computing Toolbox). Pour plus d’informations, consultez Exécuter les fonctions MATLAB sur un GPU (Parallel Computing Toolbox).
La fonction conv supporte entièrement les distributed arrays. Pour plus d’informations, consultez Exécuter les fonctions MATLAB avec des tableaux distribués (Parallel Computing Toolbox).
Historique des versions
Introduit avant R2006aLorsque vous calculez une convolution complète avec w = conv(u,v) ou w = conv(u,v,"full"), la sortie w est un vecteur ligne, sauf si les deux vecteurs en entrée u et v sont des vecteurs colonne.
Par exemple, si vous convoluez un vecteur ligne et un vecteur colonne, la sortie est un vecteur ligne.
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2 7 6 7 4u = [1; 0; 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4Dans les versions précédentes, lors du calcul d’une convolution complète, la fonction conv renvoyait soit un vecteur ligne, soit un vecteur colonne en fonction de l’orientation et de la longueur de u et de v.
Par exemple, dans les versions précédentes, conv renvoyait la convolution complète d’un vecteur ligne de 1 x 3 et d’un vecteur colonne de 3 x 1 sous forme de vecteur colonne de 5 x 1.
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4conv renvoyait la convolution complète d’un vecteur ligne de 1 x 3 et d’un vecteur colonne de 2 x 1 sous forme de vecteur ligne de 1 x 4.u = [1 0 1]; v = [2; 7]; w = conv(u,v)
w =
2 7 2 7La sortie de w = conv(u,v,"same") ou w = conv(u,v,"valid") n’a pas changé : elle suit toujours l’orientation du premier vecteur en entrée u.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)