Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Français


resize_matrix

élague et/ou étend (et convertit) une matrice ou une hypermatrice

Syntaxe

resize_matrix //  Démo
resMat = resize_matrix(mat, nbRows, nbCols)

resMat = resize_matrix(mat, nbRows, nbCols, resType)
resMat = resize_matrix(mat, nbRows, nbCols, resType, padding)
resMat = resize_matrix(mat, nbRows, nbCols,    ""  , padding)

resMat = resize_matrix(mat, newSizes)
resMat = resize_matrix(mat, newSizes, resType)
resMat = resize_matrix(mat, newSizes, resType, padding)
resMat = resize_matrix(mat, newSizes,    ""  , padding)

Paramètres

mat

Matrice à retailler, de type booléens, entiers encodés, décimaux (réels ou complexes), polynômes, ou texte

nbRows

nouveau nombre de lignes de la matrice retaillée. Les lignes en trop sont supprimées. Les lignes manquantes sont créées. Spécifier nbRows < 0 pour conserver le nombre de lignes courant.

nbCols

nouveau nombre de colonnes de la matrice retaillée. Les colonnes en trop sont supprimées. Les colonnes manquantes sont créées. Spécifier nbCols < 0 pour conserver le nombre de colonnes courant.

newSizes

vecteur spécifiant les nouvelles tailles de mat selon ses différentes dimensions. Pour conserver une taille à la taille actuelle, indiquer -1.

S'il est plus court que size(mat), il est complété avec des 1. Exemple: si mat telle que size(mat)==[ 4 3 3 2] est fournie, et newSizes=[6 2] est spécifié, newSizes = [6 2 1 1] sera utilisé.

Si newSizes est plus long que size(mat) avec newSizes($)>1, une ou plusieurs dimensions sont ajoutées à mat. Exemple: si mat telle que size(mat)==[ 4 3 ] est fournie avec newSizes=[6 2 2], le résultat sera une hypermatrice de 2 pages, la seconde étant complètement initialisée.

newSizes = [nbRows, nbCols] peut être utilisé pour une matrice.

resType

option indiquant le type en lequel la matrice/hypermatrice retaillée doit être convertie. resType peut être "boolean", "constant", "string", "int8", "uint8", "int16", "uint16", "int32", "uint32", "int64", ou "uint64".

Aucune conversion n'est admise pour une matrice ou hypermatrice de polynômes, ni pour une hypermatrice de texte.

padding

option de même type que mat, spécifiant le contenu scalaire à affecter aux éléments ajoutés à mat lorsque sa taille selon une dimension est augmentée. La valeur utilisée par défaut est 0 (réels, complexes, entiers encodés, polynômes), ou "" (texte), ou %F (booléens).

Lorsque les types de mat et padding sont distincts, Scilab tente de convertir le type de padding.

Pour les polynômes, le nom de l'inconnue du polynôme padding est forcé à celui de mat.

resMat

matrice ou hypermatrice retaillée (et convertie)

Description

Crée une matrice de taille [nbRows, nbCols] ou newSizes, ou une hypermatrice de taille newSizes. Si, pour une certaine dimension, la nouvelle taille est plus petite que l'initiale, la matrice est élaguée. Si la taille est agrandie, alors de nouveaux éléments valant padding sont ajoutés à la matrice/hypermatrice. Le nombre de dimensions peut être augmenté.

Le type du résultat peut être modifié en spécifiant l'argument resType, avec les restrictions mentionnées ci-dessus.

Exemples

// Exemples de démonstration, dont avec des polynômes :
resize_matrix

// Retaillage d'une matrice numérique
M = grand(4, 3, "uin", -9, 9)
resize_matrix(M, -1, 5)  //  Indiquer -1 pour conserver la taille courante
resize_matrix(M, 2, -1)
resize_matrix(M, 3, 4)
--> M = grand(4, 3, "uin", -9, 9)
 M  =
  -8.  -5.  -2.
  -9.   0.  -1.
   4.  -1.   6.
   5.   1.   8.

--> resize_matrix(M, -1, 5)  //  Indiquer -1 pour conserver la taille courante
 ans  =
  -8.  -5.  -2.   0.   0.
  -9.   0.  -1.   0.   0.
   4.  -1.   6.   0.   0.
   5.   1.   8.   0.   0.

--> resize_matrix(M, 2, -1)
 ans  =
  -8.  -5.  -2.
  -9.   0.  -1.

--> resize_matrix(M, 3, 4)
 ans  =
  -8.  -5.  -2.   0.
  -9.   0.  -1.   0.
   4.  -1.   6.   0.
resize_matrix(M, [3 4 2])
resize_matrix(M, [3 4 2], "", %i)
resize_matrix(M, [3 4 2], "string", %i)

// Matrice de texte
myMatString = ["Scilab", "the" ; "Open Source", "Scientific" ; "Software", "Package"]
resize_matrix( myMatString, 5, 3 )
// Equivalent syntax for new sizes:
resize_matrix( myMatString, [5 3], "", "$" ) // Contenu d'extension à façon

// Elagage, extension et conversion d'une hypermatrice donnée
h = rand(2, 3, 2)*200
resize_matrix(h, [3 2 3], "int8")
resize_matrix(h, [3 2 3], "int8", -1)   // Extension avec des -1 et conversion en int8
r = resize_matrix(h, [3 2 ] ,"" , -1)   // Extension à façon, sans conversion
size(r)  // La dernière dimension réduite à un singleton a automatiquement été simplifiée

// Matrice de polynômes
x = poly(0, "x");
P = (1-x)^grand(4, 2, "uin", 0, 3)
resize_matrix(P, 3, 3)
resize_matrix(P, [3 3 2])
resize_matrix(P, [3 3 2], "", %z)
//  => L'inconnue de %z est forcée à celle de P => x
//  => La matrice de polynômes résultante n'est pas convertible

Voir aussi

  • matrix — redimensionne un tableau, à nombre et ordre inchangés des éléments
  • size — taille d'un objet
  • typeof — type explicite ou code de surcharge d'un objet Scilab
  • double — convertit des entiers inttype ou des booléens en encodage décimal
  • strtod — convertit chaque nombre décimal littéral (chaine de caractères) en sa valeur numérique
  • string — conversion en chaîne de caractères

Historique

VersionDescription
5.5.0
  • Les polynômes et les hypermatrices sont désormais acceptés.
  • La valeur affectée aux éléments d'extension peut être spécifiée.
  • Les nouvelles tailles peuvent être spécifiées dans un vecteur.
  • resize_matrix() appelée sans paramètres affiche des exemples de démonstration.
6.0.1 L'option resType est étendue aux nouveaux types entiers int64 et uint64.
Report an issue
<< pertrans Matrice - façonnage squeeze >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:34:13 CEST 2023