Anciennes fonctionnalités Octave

Cette page web décrit, à titre d'archive, certaines fonctionnalités devenues obsolètes,
relatives à d'anciennes versions de Octave-Forge

Listes Octave

Le type d'objet "liste" est propre à Octave et relativement ancien. Conceptuellement proches des "tableaux cellulaires" (qui ont été implémentés ultérieurement sous Octave), les "listes" n'ont plus vraiment de sens aujourd'hui. Sous Octave 3, l'usage des fonctions relatives aux "listes" fait du reste apparaître un message comme quoi ce type d'objet est "deprecated" (en voie d'abandon). Malgré la puissance du mécanisme des listes Octave, il est donc désormais déconseillé d'en faire usage et de se tourner vers les "tableaux cellulaires".

Le tableau ci-dessous résume les principales fonctions relatives aux listes Octave.

Fonction Description
list(elem1, elem2 ...) Crée une liste contenant les éléments elem1, elem2... qui peuvent être chacun de types différents (scalaire, vecteur, chaîne, matrice, tableau cellulaire, liste...) ! Il est donc ainsi même possible de faire des listes de listes.

Ex: simulons en Octave le tableau 3D B 2x3x3 de la Figure ci-dessus :

  • avec B=list(zeros(2,3),ones(2,3)) par exemple, nous mettons en place les 2 premiers éléments de la liste B(1) contenant [0 0 0 ; 0 0 0] et B(2) contenant [1 1 1 ; 1 1 1] (correspondant aux 2 premières "couches" d'un tableau tridimensionnel MATLAB/Octave)
  • avec B(3)=2*ones(2,3) nous ajoutons la couche B(3) contenant [2 2 2 ; 2 2 2]
  • pour générer une liste vide, on ferait A=list()
liste2=append(liste1, elem1, elem2 ...) Retourne une nouvelle liste2 qui est constituée de la liste1 complétée par ajout des éléments elem1, elem2...

Ex: pour ajouter dans la liste B de l'exemple précédent un nouvel élément B(4) contenant la chaîne 'hello world !' (ce que l'on n'aurait pas pu faire dans un tableau multidimensionnel MATLAB/Octave en raison d'incompatibilité de dimension) :

  • on pourrait faire B=append(B,'hello world !')
  • ou (plus simplement !) B(4)='hello world !'
liste(i)
liste(i:j)
liste([i j:k l])
Retourne dans tous les cas une liste contenant respectivement : le i-ème élément de liste, les éléments i à j, les éléments i et j à k et l.
Pour accéder au contenu proprement dit des éléments, voir la fonction nth ci-dessous ou l'usage des accolades
nth(liste, i )

ou liste{i}  
(notez bien ici l'usage des acollades, comme pour les tableaux cellulaires !)

Retourne le contenu du i-ème élément de la liste (donc pas la même chose que liste(i) qui retourne ce même élément mais avec le type "list").
Si l'on a constitué des listes imbriquées, il faut utiliser la syntaxe nth(nth(liste, i), j) ou liste{i}{j} (avec accolades) pour accéder au j-ème sous-élément du i-ème élément de liste, car la syntaxe à plusieurs indices nth(liste,i,j) n'est pas autorisée.

Ex: en reprenant la liste B de l'exemple précédent :

  • nth(B,4) ou B{4} retournent la chaîne 'hello world !'
  • nth(B,4)(7:12) ou B{4}(7:12) retournent la sous-chaîne 'world'
  • B(4) retourne un objet de type liste avec 1 élément, donc il n'est pas autorisé de faire B(4)(7:12)
  • nth(B,2)(1,:) ou B{2}(1,:) retournent le vecteur [1 1 1]
reverse(liste) Retourne une nouvelle liste constituée des éléments de la liste spécifiée dans un ordre inversé. Les éléments des éventuelles listes imbriquées ne sont bien entendu pas inversés. La fonction sort ne peut pas s'appliquer aux listes.
splice(liste1, i {, n {, liste2 } } ) Retourne une nouvelle liste dans laquellle les n éléments à partir du i-ème élément de liste1 sont remplacés par tous les éléments de liste2.
Si le paramètre n est omis, la substitution porte sur tous les éléments de liste1 depuis le i-ème jusqu'à la fin.
En omettant le paramètre liste2, les n éléments à partir du i-ème élément de liste1 sont ainsi supprimés.
Si i est égal au nombre d'éléments +1 de liste1 et que n est égal à 0, cela équivaut à append(liste1,liste2)

Ex: toujours sur la base de la liste B ci-dessus :

  • splice(B,2,2,list([5 5;5 5])) retourne une liste dans laquelle les 2 éléments B(2) et B(3) sont remplacées par 1 seul élément contenant la matrice [5 5 ; 5 5]
  • splice(B,4,1) retourne une liste dans laquelle le 4ème élément (c-à-d. B(4) qui contenait la chaîne 'hello world !') est supprimé
length(liste) Retourne le nombre d'éléments de la liste

Ex: à ce stade de nos exemples, length(B) retourne 4

islist(var) Test si var est une liste : retourne 1 si c'est le cas, 0 sinon.

Ex:

  • islist(B) retourne 1, et islist([1 2 ; 3 4]) retourne 0
  • avec whos B vous noterez aussi le type de B ("list" et non pas "matrix")




Documentation © CC BY-SA 4.0 / / EPFL / Rév. 12-09-2012       ↵ Table des matières