4 Objets vectoriels et matriciels

Comme nous l'avons déjà souligné, une des caractéristique de Scilab est de privilégier les opérations matricielles quel que soit le type des éléments des matrices. Nous passons en revue dans cette section les opérateurs généraux de construction d'objets matriciels communs à tous les types de matrices.

Le type matrice dans Scilab désigne en fait des tableaux à au plus deux indices qui sont de façons interne codés comme des tableaux unidimensionnels. On peut donc toujours accéder aux éléments d'une matrice avec un ou deux indices, le stockage des éléments étant fait ``colonne par colonne''. Les vecteurs et scalaires sont en Scilab traités comme des cas particuliers de matrices.

Pour construire des tableaux multidimensionnels en Scilab on dispose du type hypermat. Ce type est implémenté en Scilab (du moins jusque dans la version 2.7) et les opérateurs associés sont en fait beaucoup moins performants que les opérateurs sur les matrices ``usuelles''.

Les opérateurs élémentaires de construction qui sont surchargés pour tous les types de matrices sont l'opérateur de concaténation en ligne ``;'' et l'opérateur de concaténation en colonne ``,''. Ces deux opérateurs ne sont considérés comme des opérateurs de concaténation que, dans un contexte matriciel, (i.e entre les symboles ``['' et ``]''). Tout leurs arguments doivent avoir le même type. On notera que dans un contexte matriciel le symbole blanc est synonyme de ``,'' et le retour à la ligne synonyme de ``;'' et que cela peut être source de confusion :


\begin{sessioncmd}
\par -->A=[1,2,3 +5] \sleftarrow{\normalfont Attention ici \v...
...A=[A,0; 1,2,3,4]
A =
\par ! 1. 2. 15. 0. !
! 1. 2. 3. 4. !
\par\end{sessioncmd}

Le tableau 1 décrit des fonctions de construction de matrices utilisées fréquemment.


Tableau 1: Quelques fonctions de construction de matrices
diag matrice (m,n) à diagonale fixée (ou extraction de diagonales)
eye matrice (m,n) avec des uns sur la diagonale principale
grand matrice (m,n) scalaire aléatoire
linspace ou ``:'' vecteur à valeurs régulièrement espacées
logspace vecteur à valeurs logarithmiquement espacées
matrix changement de dimensions (m,n) à produit m*n fixé
ones matrice (m,n) de uns
rand matrice (m,n) scalaires aléatoires (lois uniforme ou Gaussienne)
zeros matrice (m,n) de zéros
.*. opérateur de Kronecker


Et nous en donnons une illustration rapide :


\begin{sessioncmd}
\par -->A= [eye(2,2), 3*ones(2,3); linspace(3,9,5); zeros(1,5...
...cker}
D =
\par ! 1. 1. 2. 2. 3. 3. !
! 1. 1. 2. 2. 3. 3. !
\par\end{sessioncmd}

La plupart des fonctions Scilab acceptent des arguments de type matriciel et il faut se reporter à la documentation de chaque opérateur pour en comprendre la sémantique :


\begin{sessioncmd}
\par -->A=rand(2,2) \sleftarrow{\normalfont matrice aléatoire...
... }
B =
\par ! 1.2354211 0.0002901 !
! 0.9918216 1.391535 !
\par\end{sessioncmd}



Sous-sections