Calcule la convolution des séquences d'entrée X et Y. 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

Entrées/Sorties

  • c1ddbl.png X

    X est la première séquence en entrée.

  • c1ddbl.png Y

    Y est la deuxième séquence en entrée.

  • cenum.png algorithme

    algorithme spécifie la méthode de convolution à utiliser. Lorsque le paramètre algorithme est défini à direct, ce VI calcule la convolution en utilisant la méthode directe de convolution linéaire. Lorsque le paramètre algorithme est défini à frequency domain, ce VI calcule la convolution en utilisant une technique basée sur la FFT.

    Si X et Y sont petits, la méthode direct est généralement plus rapide. Si X et Y sont importants, la méthode frequency domain est généralement plus rapide. Par ailleurs, de légères différences numériques peuvent exister entre les deux méthodes.

    0
    direct
    1
    frequency domain
    (valeur par défaut)
  • i1ddbl.png X * Y

    X * Y représente la convolution de X et Y.

  • ii32.png erreur

    erreur renvoie toute erreur ou mise en garde générée par le VI. Vous pouvez câbler erreur au VI Convertir un code d'erreur en cluster d'erreur pour convertir le code d'erreur ou la mise en garde en cluster d'erreur.

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

    Exemples

    Reportez-vous aux exemples de fichiers inclus avec LabVIEW suivants.

    • labview\examples\Signal Processing\Signal Operation\Edge Detection with 2D Convolution.vi