Convolution
Convolution de deux entrées
Bibliothèques :
DSP System Toolbox /
Signal Operations
Description
Le bloc Convolution convolue la première dimension d'un tableau en entrée u en N dimensions avec la première dimension d'un tableau en entrée v multidimensionnel. Le bloc peut également convoluer un vecteur colonne avec la première dimension d'un tableau en entrée multidimensionnel.
L'équation générale de la convolution est la suivante :
Deux blocs DSP System Toolbox™ peuvent être utilisés pour convoluer deux signaux d'entrée :
Convolution
Discrete FIR Filter (Simulink)
Le bloc Convolution suppose que tous les éléments de u et v sont disponibles à chaque pas de temps Simulink® et calcule la convolution complète à chaque pas.
Le bloc Discrete FIR Filter peut servir à convoluer les signaux dans les cas où tous les éléments de v sont disponibles à chaque pas de temps, mais où u est une séquence qui intervient sur toute la durée de la simulation. Lorsque vous utilisez le bloc Discrete FIR Filter, la convolution n’est calculée qu’une seule fois.
Pour identifier le bloc répondant le mieux à vos besoins, veuillez consulter Choisir le bloc de convolution qui convient.
Exemples
Ports
Entrée
Première entrée u définie par un scalaire, un vecteur, une matrice ou un tableau ND. Lorsque les deux entrées sont réelles, la sortie l’est également. Lorsqu’au moins l’une des deux entrées est complexe, la sortie l’est également. Toutes les dimensions de port des deux entrées, à l'exception de la première, doivent présenter la même valeur.
Les entrées u et v présentent la valeur zéro lorsqu'elles sont indexées en dehors de leurs plages valides.
Types de données : single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point
Support des nombres complexes : Oui
Deuxième entrée v définie par un scalaire, un vecteur, une matrice ou un tableau en N dimensions. Lorsque les deux entrées sont réelles, la sortie l’est également. Lorsqu’au moins l’une des deux entrées est complexe, la sortie l’est également. Toutes les dimensions de port des deux entrées, à l'exception de la première, doivent présenter la même valeur.
Les entrées u et v présentent la valeur zéro lorsqu'elles sont indexées en dehors de leurs plages valides.
Types de données : single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point
Support des nombres complexes : Oui
Sortie
Signal convolué, renvoyé sous la forme d’un scalaire, d’un vecteur, d’une matrice ou d’un tableau ND selon les signaux d’entrée. Lorsque les deux entrées sont réelles, la sortie l’est également. Lorsqu’au moins l’une des deux entrées est complexe, la sortie l’est également. Les entrées u et v présentent la valeur zéro lorsqu'elles sont indexées en dehors de leurs plages valides. Pour plus de précisions sur la manière dont le signal convolué évolue en fonction des entrées, veuillez consulter En savoir plus.
Types de données : single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point
Support des nombres complexes : Oui
Paramètres
Onglet principal
Définissez le domaine dans lequel le bloc calcule les convolutions :
Time: le bloc effectue ses calculs dans le domaine temporel, ce qui réduit au minimum l'utilisation de la mémoire.Frequency: le bloc effectue ses calculs dans le domaine fréquentiel, ce qui peut nécessiter moins de calculs que dans le domaine temporel, selon la longueur de l'entrée.Fastest: le bloc effectue ses calculs dans le domaine qui minimise le nombre de calculs.
Les signaux en virgule fixe ne sont supportés que dans le domaine temporel. Lors de la saisie de signaux en virgule fixe, veillez à définir le paramètre Computation domain sur Time.
Onglet Data Types
Spécifiez le mode d'arrondi pour les opérations en virgule fixe en choisissant l'une des options suivantes :
FloorCeilingConvergentNearestRoundSimplestZero
Pour plus de précisions, veuillez consulter Modes d’arrondi.
Remarque
Les paramètres Rounding mode et Saturate on integer overflow n'ont aucune incidence sur les résultats numériques lorsque toutes ces conditions sont satisfaites :
Les données Product output sont de type
Inherit: Inherit via internal rule.Les données Accumulator sont de type
Inherit: Inherit via internal rule.Les données Output sont de type
Inherit: Same as accumulator.
Avec ces paramètres de type de données, le bloc fonctionne en mode pleine justesse.
Lorsque vous sélectionnez ce paramètre, le bloc effectue une saturation du résultat de son opération en virgule fixe. Lorsque vous désélectionnez ce paramètre, le bloc encapsule le résultat de son opération en virgule fixe. Pour plus de précisions concernant les fonctions saturate et wrap, veuillez consulter Gestion des dépassements pour les opérations en virgule fixe.
Remarque
Les paramètres Rounding mode et Saturate on integer overflow n'ont aucune incidence sur les résultats numériques lorsque toutes ces conditions sont satisfaites :
Les données Product output sont de type
Inherit: Inherit via internal rule.Les données Accumulator sont de type
Inherit: Inherit via internal rule.Les données Output sont de type
Inherit: Same as accumulator.
Avec ces paramètres de type de données, le bloc fonctionne en mode pleine justesse.
Product output définit le type de données du résultat d'une opération de produit dans le bloc Convolution.
Inherit: Inherit via internal rule: le bloc hérite du type de données de sortie du produit sur la base d’une règle interne. Pour plus d’informations sur cette règle, veuillez consulter Inherit via Internal Rule.Inherit: Same as first input: le bloc définit le même type pour les données de sortie du produit que celui des données de la première entrée.fixdt([],16,0): le bloc définit un type de données en virgule fixe, auto-signé, en virgule binaire et mis à l'échelle, avec une longueur de mot de 16 bits et une longueur de fraction de 0.
Vous pouvez également définir le type de données Product output avec le Data Type Assistant. Pour utiliser l'assistant, cliquez sur le bouton Show data type assistant
.
Pour plus d’informations sur l’assistant de type de données, veuillez consulter Specify Data Types Using Data Type Assistant (Simulink).
Pour plus d’informations sur le type de données de sortie du produit, veuillez consulter Multiplication Data Types et Types de données en virgule fixe.
Accumulator définit le type de données de la sortie d'une opération d'accumulation dans le bloc Convolution.
Inherit: Inherit via internal rule: le bloc hérite du type de données de l’accumulateur sur la base d’une règle interne. Pour plus d’informations sur cette règle, veuillez consulter Inherit via Internal Rule.Inherit: Same as first input: le bloc définit le même type pour les données de l‘accumulateur que celui des données de la première entrée.Inherit: Same as product output: le bloc définit le même type pour les données de l’accumulateur que celui des données de sortie du produit.fixdt([],16,0): le bloc définit un type de données en virgule fixe, auto-signé, en virgule binaire et mis à l'échelle, avec une longueur de mot de 16 bits et une longueur de fraction de 0.
Vous pouvez également définir le type de données Accumulator avec le Data Type Assistant. Pour utiliser l'assistant, cliquez sur le bouton Show data type assistant
.
Pour plus d’informations sur l’assistant de type de données, veuillez consulter Specify Data Types Using Data Type Assistant (Simulink).
Pour visualiser une représentation schématique de l'utilisation du type de données de l’accumulateur dans ce bloc, veuillez consulter Types de données en virgule fixe.
Output définit le type de données de la sortie du bloc Convolution.
Inherit: Same as accumulator: le bloc définit le même type pour les données de la sortie que celui des données de l’accumulateur.Inherit: Same as first input: le bloc définit le même type pour les données de la sortie que celui des données de la première entrée.Inherit: Same as product output: le bloc définit le même type pour les données de la sortie que celui des données de sortie du produit.fixdt([],16,0): le bloc définit un type de données en virgule fixe, auto-signé, en virgule binaire et mis à l'échelle, avec une longueur de mot de 16 bits et une longueur de fraction de 0.
Vous pouvez également définir le type de données Output avec le Data Type Assistant. Pour utiliser l'assistant, cliquez sur le bouton Show data type assistant
.
Pour plus d’informations, veuillez consulter Control Data Types of Signals (Simulink).
Pour plus d’informations sur le type de données de la sortie, veuillez consulter Types de données en virgule fixe.
Indiquez la valeur minimale que le bloc peut produire. Simulink utilise cette valeur minimale pour effectuer ce qui suit :
Vérifier la plage de simulation. Veuillez consulter Specify Signal Ranges (Simulink).
Mise à l'échelle automatique des types de données en virgule fixe.
Indiquez la valeur maximale que le bloc peut produire. Simulink utilise cette valeur maximale pour effectuer ce qui suit :
Vérifier la plage de simulation. Veuillez consulter Specify Signal Ranges (Simulink).
Mise à l'échelle automatique des types de données en virgule fixe.
Sélectionnez ce paramètre pour empêcher les outils en virgule fixe de remplacer les types de données que vous indiquez dans la boîte de dialogue du bloc.
Caractéristiques des blocs
Types de données |
|
Traversée directe |
|
Signaux multidimensionnels |
|
Signaux de taille variable |
|
Détection des passages à zéro |
|
En savoir plus
| Question | Réponse | Bloc(s) recommandé(s) |
|---|---|---|
Combien de convolutions avez-vous l’intention d’effectuer ? | Beaucoup de convolutions, une par pas de temps |
|
Une seule convolution sur toute la durée de la simulation |
| |
Quelle est la longueur de vos séquences d’entrée ? | Les deux séquences présentent une longueur finie |
|
Une séquence présente une longueur infinie (non prédéterminée) |
| |
Combien d'entrées sont des flux scalaires ? | aucune |
|
Une ou les deux |
|
Ce bloc calcule toujours la convolution de deux tableaux multidimensionnels en entrée le long de la première dimension. Lorsque les deux entrées sont des tableaux multidimensionnels, la taille de leur première dimension peut varier, mais celle de toutes les autres doit être identique. Par exemple, lorsque u est un tableau Mu × N × P et que v est un tableau Mv × N × P, on obtient en sortie un tableau (Mu+Mv–1) x N x P.
Lorsque u est une matrice Mu x N et v, une matrice Mv x N, la sortie y est une matrice (Mu+Mv–1) x N dont la je colonne contient les éléments suivants :
Les entrées u et v présentent la valeur zéro lorsqu'elles sont indexées en dehors de leurs plages valides. Lorsque les deux entrées sont réelles, la sortie l’est également. Lorsqu’au moins l’une des deux entrées est complexe, la sortie l’est également.
Lorsqu'une entrée est un vecteur colonne et que l'autre est un tableau multidimensionnel, le bloc convolue indépendamment le vecteur et la première dimension du tableau en entrée multidimensionnel. Par exemple, lorsque u est un vecteur colonne Mu x 1 et v, une matrice Mv x N, la sortie est une matrice (Mu+Mv–1) x N dont la je colonne contient les éléments suivants :
Le bloc Convolution accepte également deux vecteurs colonnes en entrée. Lorsque u et v sont des vecteurs colonnes de longueurs Mu et Mv, le bloc Convolution convolue les vecteurs avec des longueurs Mu et Mv de telle sorte que :
La sortie obtenue est un vecteur colonne (Mu+Mv-1) x 1.
Ce diagramme présente les types de données utilisés au sein du bloc Convolution pour les signaux en virgule fixe (domaine temporel uniquement).

Vous pouvez définir la sortie du produit, l'accumulateur et les types de données de la sortie dans la boîte de dialogue du bloc, comme l’indique Paramètres.
La sortie du multiplicateur adopte le type de données de sortie du produit lorsque l'entrée est réelle. Lorsque l'entrée est complexe, le résultat de la multiplication adopte le type de données de l'accumulateur. Pour plus de précisions sur la manière dont l'opération de multiplication est effectuée, veuillez consulter Multiplication Data Types.
Remarque
Lorsqu’au moins l'une des deux entrées est un signal en virgule fixe signé, toutes les données internes du bloc sont de type signé en virgule fixe. Les données internes du bloc sont de type non signé en virgule fixe uniquement lorsque les deux entrées sont des signaux non signés en virgule fixe.
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec Simulink® Coder™.
Conversion en virgule fixe
Concevez et simulez des systèmes en virgule fixe avec Fixed-Point Designer™.
Historique des versions
Introduit avant R2006a
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)
