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: simat
telle quesize(mat)==[ 4 3 3 2]
est fournie, etnewSizes=[6 2]
est spécifié,newSizes = [6 2 1 1]
sera utilisé.Si
newSizes
est plus long quesize(mat)
avecnewSizes($)>1
, une ou plusieurs dimensions sont ajoutées àmat
. Exemple: simat
telle quesize(mat)==[ 4 3 ]
est fournie avecnewSizes=[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 est0
(réels, complexes, entiers encodés, polynômes), ou""
(texte), ou%F
(booléens).Lorsque les types de
mat
etpadding
sont distincts, Scilab tente de convertir le type depadding
.Pour les polynômes, le nom de l'inconnue du polynôme
padding
est forcé à celui demat
.- 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
Version | Description |
5.5.0 |
|
6.0.1 | L'option resType est étendue aux nouveaux types entiers
int64 et uint64 . |
Report an issue | ||
<< pertrans | Matrice - façonnage | squeeze >> |