4-10. Les Formules

4-10-1. Que sont les formules en langage MUSTIG ?

4-10-2. Quand utiliser des formules ?

4-10-3. Comment utiliser des formules ?

Numéros de bornes et étiquettes

Syntaxe du texte de la formule

Erreurs de syntaxe dans les formules

Les constantes spéciales

Les opérateurs du calcul

Les opérateurs logiques

Exemple de formule : seuiller des données

 

4-10-1. Que sont des formules en langage MUSTIG?

Bien que le mode de programmation habituel en langage MUSTIG soit la construction de graphes, la macro Formule fournit une interface texte à l'utilisateur, en permettant de remplacer une portion d'un graphe par des lignes de comamnde, dans le style C ou Fortran.

En compilant le graphe, MUSTIG remplace la formule par un graphe équivalent, et ce graphe est compilé de la manière habituelle.

Les formules sont capables de faire des opérations scalaires seulement. C'est-à-dire, elles exécutent les mêmes opérations sur toutes les données de l'entrée. Des opérations logiques peuvent être incluses.

Le module Formule est disponible dans la section " <-> " de la Bibliothèque standard. Cette section contient tous les outils de l'interface proposés avec MUSTIG.

4-10-2. Quand utiliser des formules ?

En matière de graphe, c'est quelquefois plus simple d'écrire explicitement une formule que construire le graphe correspondant. Par exemple, pour convertir une base du temps en une sinusoïde, vous pouvez trouver plus commode d'écrire :

Y = sin(2*PI*nu*t + phi)

que de construire le graphe MUSTIG suivant :

Donc, des algorithmes qui contiennent beaucoup d'opérations simples scalaires ou logiques consécutives peuvent être décrits plus clairement en utilisant des formules qu'en utilisant des graphes MUSTIG.

4-10-3. Comment utiliser les formules?

Numéros de borne et étiquettes

La macro Formule a 8 bornes, numérotées de 1 à 8 dans le sens des aiguilles d'une montre comme montré ci-dessous :

Glissez-en une dans votre fenêtre programme. Vous pouvez ajouter ou effacer des bornes si nécessaire (voir Créer une borne et Effacer une borne). Dans ce cas, toutes les bornes sont re - numérotées dans le sens des aiguilles d'une montre.

Vous pouvez étiqueter aussi une ou plusieurs bornes pour faire référence à elles plus facilement : cliquez sur la borne pour la sélectionner et taper Alt+L. Cliquer où vous voulez que l'étiquette apparaîsse pour entrer en mode d'édition et entrez l'étiquette. Cliquez pour sortir du mode d'édition n'importe où ailleurs. Vous pouvez alors déplacer l'étiquette. Les bornes non étiquetées sont référencées en utilisant leur numéro.

Le numéro de la borne ou l'étiquette sont utilisés pour faire référence aux données correspondantes. Toute borne peut être une entrée ou une borne de sortie, MUSTIG vérifie la validité du script de la formule en conséquence.

Vous pouvez renommer le module Formule en quelque chose de plus explicite, tel que Seuillage personnalisé, ou Calcul de la Fréquence, etc.,

Syntaxe du texte de la formule

Cliquez deux fois sur le module Formule : une fenêtre de texte paraît. Tapez Majuscule+Ctrl+Clic pour entrer en mode d'édition (voir Editer un texte). Vous êtes maintenant prêt à entrer le texte de la formule. Cliquez n'importe où à l'extérieur de la fenêtre de la formule pour sortir.

Le texte de la formule peut contenir plusieurs lignes, chaque ligne est séparée de la précédente par un retour chariot. Chaque ligne doit être composée de deux parties, séparées par le signe " = " :

Identificateur = Valeur

L'identificateur peut être:

La Valeur peut être:

 

Exemples :

Dans les exemples ci-dessous, les variables du texte peuvent être soit variables intermédiaires soit entrées étiquetées soit bornes de sortie

Threshold=$1

Charge la(les) valeur(s) d'entrée sur la borne 1 dans une variable intermédiaire nommée Threshold.

Ou envoie les valeurs sur la borne 1 sur une borne étiquetée "Threshold" (laquelle doit exister).

Tmp=Threshold

Copies une variable (ou borne étiquetée) en une autre variable (ou borne étiquetée).

x=2*$2+0.5

Charges la variable (ou borne étiquetée) x avec 0.5 plus deux fois la(les) valeur(s) d'entrée sur la borne 2.

$5=result

Envoie la(les) valeur(s) de la variable (ou borne étiquetée) result à la borne de la sortie de numéro 5.

Erreurs de syntaxe dans les formules

Erreur de la syntaxe à l'intérieur de formule

La borne n'est pas reliée

Les constantes spéciales

Quelques valeurs scalaires particulières peuvent être directement utilisées dans le texte de la formule :

PI

3.14159…

DPI

Même que ci--dessus de, mais en type réel 8 octets

J

Nombre complexe élémentaire (0,1)

Les opérateurs de calcul

Les opérateurs de calcul suivants peuvent être utilisés dans le texte de formule :

FIX (), FLOAT ()

Conversion de type

-

Moins unaire

SIN(), COS(), TAN()

Les opérateurs trigonométriques

ASIN (), ACOS (), ATAN ()

Les opérateurs trigonométriques inverses

LOG(), LOG10()

Les opérateurs logarithmiques

EXP(), EXP10()

Les opérateurs exponentiels

+ - * /

Les opérations arithmétiques

Les opérateurs logiques

Les opérateurs logiques suivants peuvent être utilisés dans le texte de formule :

>, <

Comparaison : a<b retourne 0 ou 1.

=

Test d'égalité : a=b retourne 0 ou 1

.. ? .. : ..

La syntaxe de la commutation conditionnelle

Exemples :

a>b

Retourne un entier égal à 1 si a>b, ou égal à 0 si a<=b

a<b

Retourne un entier égal à 1 si a<b, ou égal à 0 si a>=b

a=b

Retourne un entier égal à 1 si a=b, ou égal à 0 autrement

a? b: c

Retourne b si a n'est pas égal à zéro, c autrement

Exemple de formule : seuillage de données

Le graphe suivant et sa formule peuvent être utilisés pour seuiller un signal d'entrée :

Graphe MUSTIG

Le processus de seuillage est fait par la formule (voir le texte de la formule à droite). Le module Visu2C/t permet d'afficher signal original et signal seuillé à la fois :

Texte entré dans le module Formule

Ici, des variables intermédiaires sont utilisées pour manipuler les données d'entrée (signal et valeur de seuil). Le signal seuillé est envoyé sur la borne 6.

 

Note : Comme seulement des opérations scalaires peuvent être faites, il n'est pas besoin ici de spécifier si les données sur une borne donnée sont un scalaire, ou un vecteur, ou une matrice, etc. Les opérations décrites sont faites sur chaque échantillon de l'entrée.

 

Une formule encore plus simple est obtenue en utilisant des étiquettes des bornes :

Graphe MUSTIG

Le texte de la formule

 

Quand vous demandez les résultats (clic à droite), MUSTIG construit et compile en interne un graphe équivalent :