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.


icon

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

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 jN

et

yj = 0, j < 0, ou jM.

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.
X'(f) = FFT(x') Y'(f) = FFT(y')
  • 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.
X * Y = IFFT(X'(f) · Y'(f))

Ce VI calcule ainsi la convolution linéaire, et non pas la convolution circulaire. Cependant, comme x(t) * y(t)NX(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

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 mM1 or n < 0 ou nN1

et

y(m,n) , m < 0 ou mM2 ou n < 0 ou nN2.

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.
X'(f) = FFT(x') Y'(f) = FFT(y')
  • 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.
X * Y = IFFT(X'(f) · Y'(f))

La taille en sortie détermine la taille de la matrice en sortie X * Y comme le montre l'illustration suivante.

  1. full

    La matrice en sortie X * Y est de type (M1+M2–1) sur (N1+N2–1).

  2. 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.

  3. 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 (M1M2+1, N1N2+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