# flipdim

retourne par blocs les éléments de `x` selon une dimension

## Séquence d'appel

    y = flipdim(x, dim [,sb])

## Paramètres

x, y

  scalaires, vecteurs, matrices, ou hypermatrices de n'importe quel type, de même taille

dim

  entier positif, la dimension de `x` selon laquelle les éléments seront retournés

sb

  entier positif, la taille des blocs à permuter

## Description

A partir de `x`, un scalaire/vecteur/matrice/hypermatrice de n'importe quel type et deux entiers positifs `dim` et `sb`, cette fonction retourne les éléments de `x` par blocs de taille `sb` selon le nombre dimension `dim` de `x` (`x` et `y` ont la même taille)

Le paramètre optionnel `sb` (pour Size Block) permet de retounerles éléments de `x` par blocs de taille `sb*size(x,2)` (`dim=1`) ou `size(x,1)*sb` (`dim=2`).

## Exemples

    // Exemple 1 : selon la première dimension
    x = [1 2 3 4; 5 6 7 8]
    dim = 1
    y = flipdim(x, dim)

    // Exemple 2 : selon la deuxième dimension
    dim = 2
    y = flipdim(x, dim)

    // Exemple 3 : selon la troisième dimension
    x = matrix(1:24, [3 2 4])
    dim = 3
    y = flipdim(x, dim)

    // Exemple 4 : premier exemple, mais avec des complexes
    x = [1+%i 2*%i 3 4; 5 6-%i 7 8*%pi*%i]
    dim = 1
    y = flipdim(x, dim)

    // Entiers :
    x = int16(grand(4, 3, 2, "uin", -9, 9))
    y = flipdim(x, 1)

    // Booléens :
    x = (grand(3, 4, "uin", -9, 9) > 0)
    y = flipdim(x, 2)

    // Textes :
    x = matrix(strsplit("a":"x", 1:23), 4, 6);
    x = x+x
    flipdim(x, 2)

    // Polynômes :
    x = inv_coeff(grand(3, 9, "uin", 0, 3), 2)
    flipdim(x, 1)

    // Rationals :
    n = inv_coeff(grand(3, 9, "uin", 0 ,3), 2);
    d = inv_coeff(grand(3, 9, "uin", 0, 3), 2);
    r = n./d
    flipdim(r, 2)

Exemples utilisant `sb` :

    X = [0 1 2 3 4 5 6 7 8 9 10 11];
    flipdim(X, 2, 2) // => [10 11   8 9   6 7   4 5   2 3   0 1] // Taille du bloc = 2.
    flipdim(X, 2, 3) // => [9 10 11   6 7 8   3 4 5   0 1 2]
    flipdim(X, 2, 4) // => [8 9 10 11   4 5 6 7   0 1 2 3]
    flipdim(X, 2, 6) // => [6 7 8 9 10 11   0 1 2 3 4 5]

    // Erreur si sb ne divise pas la dimension ciblée de x.
    y = flipdim(x, 2, 5); // size(X) = [1 12] et sb=5 ne divise pas 12.

## History

5.5.0
Extension de décimaux à tout type : booléens, entiers, chaines de caractères, polynômes et fractions rationnelles. Nouveau paramètre optionnel `sb` pour retourner `x` par blocs.