Convolution
- Mise à jour2025-07-30
- Temps de lecture : 6 minute(s)
Calcule la convolution des séquences X et Y en entrée. Câblez des données aux entrées X et Y pour déterminer l'instance polymorphe à utiliser ou sélectionnez manuellement l'instance.

Convolution 1D
La convolution linéaire des signaux x(t) et y(t) est définie de la façon suivante :

le symbole * représentant une convolution linéaire.
Si algorithme est direct, ce VI utilise l'équation qui suit pour effectuer l'implémentation discrète de la convolution linéaire et obtenir les éléments de X * Y.

pour i = 0, 1, 2, … , M+N–2
où h correspond à X * Y.
N est le nombre d'éléments dans X, M est le nombre d'éléments dans Y, les éléments indexés en dehors des plages de X et Y sont égaux à zéro, comme le montrent les relations suivantes :xj = 0, j < 0, ou j ≥ N
et
yj = 0, j < 0, ou j ≥ M.
Si algorithme est frequency domain, ce VI effectue les étapes suivantes, dans l'ordre, pour calculer la convolution linéaire :
- Ce VI commence par ajouter des zéros à la fin de X et de Y pour que leur longueur soit égale à M + N – 1, comme dans les équations suivantes.

- Puis il calcule la transformée de Fourier de X' et Y' selon les équations suivantes.
- Enfin, ce VI multiplie X'(f) par Y'(f) et calcule la transformée de Fourier inverse du produit. Le résultat est la convolution linéaire de X et Y, comme l'illustre l'équation suivante.
Ce VI calcule ainsi la convolution linéaire, et non pas la convolution circulaire. Cependant, comme x(t) * y(t)N ⇔ X(f)Y(f) est une paire de transformées de Fourier, où x(t) * y(t)N est la convolution circulaire de x(t) et y(t), vous pouvez créer une version circulaire de la convolution. Pour calculer la convolution circulaire, vous pouvez utiliser un diagramme semblable au diagramme représenté dans l'illustration suivante.

Convolution 2D
Si algorithme est direct, ce VI utilise l'équation suivante pour calculer la convolution à deux dimensions des matrices en entrée X et Y.

pour i = 0, 1, 2, … , M1+M2–2 et j = 0, 1, 2, … , N1+N2–2
où h correspond à X * Y,
M1 est le nombre de lignes de la matrice X, N1 est le nombre de colonnes de la matrice X, M2 est le nombre de lignes de la matrice Y, N2 est le nombre de colonnes de la matrice Y, Les éléments indexés en dehors des plages de X et Y sont égaux à zéro, comme le montrent les relations suivantes :x(m,n), m < 0 ou m ≥ M1 or n < 0 ou n ≥ N1
et
y(m,n) , m < 0 ou m ≥ M2 ou n < 0 ou n ≥ N2.
Si algorithme est frequency domain, ce VI effectue les étapes suivantes, dans l'ordre, pour calculer la convolution à deux dimensions :
- Ce VI commence par ajouter des zéros à la fin de X et de Y pour que leur taille soit égale à (M1 + M2 – 1, N1 + N2 – 2), comme dans les équations suivantes.

- Puis il calcule la transformée de Fourier de X' et Y' selon les équations suivantes.
- Enfin, ce VI multiplie X'(f) par Y'(f) et calcule la transformée de Fourier inverse du produit. Le résultat est la convolution à deux dimensions de X et Y, comme l'illustre l'équation suivante.
La taille en sortie détermine la taille de la matrice en sortie X * Y comme le montre l'illustration suivante.

-
full
La matrice en sortie X * Y est de type (M1+M2–1) sur (N1+N2–1).
-
size X
Ceci est utile dans le traitement de l'image. Si X correspond à l'image que vous souhaitez filtrer, Y correspond à une petite matrice appellée "noyau de convolution". X * Y correspond à l'image filtrée dont la taille est la même que l'image de X. La matrice (M1, N1) en sortie correspond à la partie centrale de la matrice en sortie lorsque la taille en sortie est full.
-
compact
Calculer des éléments de front de X * Y requiert un remplissage par des zéros si la taille en sortie est full ou qu'elle correspond à size X. LabVIEW supprime ces éléments de front si la taille en sortie est compact. La matrice (M1–M2+1, N1–N2+1) en sortie correspond à la partie centrale de la matrice en sortie lorsque la taille en sortie correspond à size X.
Exemples
Reportez-vous aux exemples de fichiers inclus avec LabVIEW suivants.
- labview\examples\Signal Processing\Signal Operation\Edge Detection with 2D Convolution.vi