Solution de problèmes fréquents en Octave

Erreurs et avertissements de l’interpréteur du langage Matlab

Explication : Les lettres apparaissant ci-dessous en italique symbolisent des textes ou nombres spécifiques affichés par Octave à la même position dans le message d’erreur ou d’avertissement donné.

Si le message contient le texte near line i column j et si l’erreur ou avertissement en cause s’est produit lors de l’exécution d’un fichier M, alors i et j sont le numéro de la ligne et le numéro de colonne dans cette ligne où une anomalie a été remarquée par l’interpréteur. Cela peut représenter l’emplacement de la source de cette anomalie mais pas toujours : il est possible qu’une telle anomalie est causée par une erreur de programmation commise avant (selon le cours de l’exécution du programme). Si l’erreur ou avertissement en cause s’est produit lors de l’exécution d’une instruction introduite en ligne de commandes d’Octave (dans la fenêtre de l’interpréteur) ou avant que l’exécution du fichier M approprié puisse commencer, alors i représente le numéro d’instruction dans la fenêtre Octave.

MessageExplicationPossible cause et solution
error: `c' undefined near line i column j
c est une commande (y compris le nom d’une fonction prédéfinie) en Matlab
La commande c n’est pas connue à l’interpréteur La graphie de c est incorrecte ; vérifiez-la, y compris majuscules/minuscules ainsi que l’usage correct d’espaces et de symboles voisins
error: `f' undefined near line i column j
f est le nom d’une fonction créée par vous
L’interpréteur n’a pas pu trouver le fichier M contenant la définition de la fonction f
  1. Le répertoire en cours n’est pas celui dans lequel se trouve le fichier M contenant la définition de cette fonction
    • Trouvez le fichier à l’aide de l’Explorateur Windows et notez le chemin de ce répertoire affiché en haut de la fenêtre
    • Affichez le répertoire de travail dans Octave (pwd, voir la conférence)
    • Si les deux répertoires sont différents, déplacez le fichier vers le répertoire de travail d’Octave ou changez du répertoire de travail d’Octave (cd, voir la conférence)
  2. L’extension du nom du fichier M n’est pas m
    • Assurez-vous que les extensions de fichiers sont affichés en Explorateur Windows (voir Introduction)
    • Si le nom du fichier ne finit pas par .m, ouvrez ce fichier et enregistrez-le avec une extension correcte (voir Introduction)
  3. Le nom du fichier est différent du nom de la fonction
    • Ouvrez le fichier
    • Comparez le nom du fichier avec le nom de la fonction défini avec la commande function
    • Si le nom du fichier est différent du nom de la fonction, changez du nom du fichier ou de la fonction de façon qu’ils soient identiques
  4. La connexion avec le serveur a été temporairement perdue
    • Momentanément changez du répertoire de travail d’Octave pour c:\ avec la commande cd('c:\')
    • Retournez au répertoire de travail approprié avec cd
  5. La connexion avec le serveur a été perdue de façon permanente
    • Ouvrez une nouvelle fenêtre Octave (pour le moment ne fermez pas la fenêtre actuelle) en cliquant sur le raccourci trouvé sur le bureau Windows
    • Si nécessaire, changez du répertoire de travail avec cd
    • Si vous êtes capable d’appeler votre fonction depuis la nouvelle fenêtre Octave, fermez l’ancienne (après avoir copié son contenu s’il peut vous servir dans le futur)
error: `a' undefined near line i column j
error: called from:
error: f at line k, column l
f est une fonction créée par vous et a est son argument
La valeur de l’argument a de la fonction f n’a pas été spécifiée Le passage de l’argument a est manquant ou incorrect dans la formule d’appel de la fonction f (voir la conférence)
error: `v' undefined near line i column j
error: called from:
error: f at line k, column l
f est une fonction créée par vous et v est une variable autre que son argument
Le mot v n’est pas un nom de variable reconnu à l’intérieur de la fonction f
  1. Vérifiez la graphie de v, y compris majuscules et minuscules ainsi que l’usage correct d’espaces et de symboles voisins
  2. Vous essayez d’utiliser une variable qui est définie dans l’espace de variables de base ou dans l’espace de variables d’une autre fonction ; v doit devenir un argument de la fonction f et sa valeur doit être passée comme argument dans la formule d’appel de f
error: `t' undefined near line i column j
t est un texte (y compris un caractère)
L’interpréteur a essayé de comprendre le mot t comme une commande ou un nom de fonction ou de variable, ce qu’il n’est pas Il faut proprement discerner des textes (chaînes de caractères) et des mots à interpréter (commande, nom de fonction, nom de variable ; voir la conférence)
error: operator o: nonconformant arguments (op1 is nxm, op2 is rxs) L’opération o ne peut pas être effectuée avec des opérandes matricielles ou vectorielles dont les tailles sont n×m et r×s

Vous avez essayé de :

  • additionner, soustraire, multiplier ou diviser élément par élément des vecteurs à tailles différentes ou orientations différentes (horizontale / verticale)
  • multiplier ou diviser au sens matriciel au lieu de le faire élément par élément (voir la conférence)
parse error near line k of file n
 syntax error
k est le numéro d’une ligne située après la commande endfunction
L’interpréteur n’attend rien après la commande endfunction parce que c’est interdit par la syntaxe du langage Matlab Supprimez tous les caractères apparaissant après la commande endfunction
parse error near line k of file n
 syntax error
>>> fragment
>>> ^
k est le numéro d’une ligne située avant la commande endfunction
Erreur de syntaxe ; l’interpréteur n’a pas été capable de comprendre la ligne k du fichier n, à commencer du caractère marqué par ^ (possiblement dans le contexte des caractères ou lignes précédents)
  1. La graphie d’un mot (instruction, nom de fonction, nom de variable) est incorrecte
  2. L’espace ou un autre caractère séparateur (virgule, deux-points, point-virgule, point…) :
    • apparaît où il ne devrait pas être trouvé
    • manque où il est nécessaire pour séparer deux éléments du langage (p. ex. un mot et un nombre)
    • est utilisé là où la syntaxe du langage Matlab prévoit un autre
  3. Une opération (arithmétique, logique, de relation) est incomplète, p. ex. il manque une opérande
  4. Une structure de contrôle est incomplète, p. ex. son début manque d’informations, il manque son fin (end…)
warning: function name `f' does not agree with function file name `n' Le nom du fichier n est différent du nom de la fonction f Ouvrez le fichier ; comparez son nom avec le nom de la fonction défini avec la commande function ; changez l’un ou l’autre de façon que les deux soient identiques
warning: f: some elements in list of return values are undefined La valeur de la variable résultat de la fonction f n’a pas été définie Dans la définition de la fonction f, il manque l’affectation de la variable définie comme son résultat avec l’instruction function
warning: time stamp for `n' is in the future Il paraît à Octave que le fichier n a été modifié plus tard que maintenant L’horloge du serveur sur lequel se trouve votre compte (c’est-à-dire le disque H), où vous enregistrez vos fichiers, n’est pas synchronisé avec l’horloge de l’ordinateur sur lequel vous travaillez. Si le temps local est retardé par rapport au temps du serveur, vous verrez ce message que vous pouvez ignorer.

Autres problèmes avec l’environnement

DescriptionPossible cause et solution
Le résultat d’une fonction ne change pas malgré que vous avez modifié sa définition dans un fichier M
  1. Le fichier M n’a pas été enregistré après sa modification
    • Enregistrez-le dans l’éditeur texte où vous l’avez modifié
  2. Le fichier enregistré ne porte pas l’extension m
    • Assurez-vous que les extensions de fichiers sont affichés en Explorateur Windows (voir Introduction)
    • Si le nom du fichier ne finit pas par .m, ouvrez ce fichier et enregistrez-le avec une extension correcte (voir Introduction)
  3. Le nom du fichier M est différent du nom de la fonction
    • Ouvrez le fichier M et comparez son nom avec le nom de la fonction défini avec la commande function
    • Changez l’un ou l’autre de façon que les deux soient identiques
  4. Le fichier que vous avez modifié porte le même nom mais se trouve dans un répertoire différent
    • À l’aide de la commande pwd, vérifiez si le répertoire de travail d’Octave est correct ; sinon, changez-en à l’aide de cd (voir la conférence)
    • Ensuite fermez et rouvrez le fichier M se trouvant dans ce répertoire et assurez-vous que c’est bien lui qui a été modifié
  5. L’ancienne version de la fonction est restée dans la mémoire de l’ordinateur
    • Supprimez la version mémorisée avec la commande clear (voir la conférence)
    • Appelez la fonction une nouvelle fois
  6. La connexion avec le serveur a été temporairement perdue ; par conséquent Octave a cessé de rafraîchir sa mémoire de fonctions depuis le disque H
    • Momentanément changez du répertoire de travail d’Octave pour c:\ avec la commande cd('c:\')
    • Retournez au répertoire de travail approprié avec cd