Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.1.0 - English

Change language to:
Français - 日本語 - Português - Русский

Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.
See the recommended documentation of this function

Scilab Help >> Elementary Functions > Matrix - shaping > flipdim

flipdim

reverses the order of (blocks of) rows, columns, pages.. of an array

Syntax

y = flipdim(x, dim)
y = flipdim(x, dim, blockSize)

Arguments

x, y

vectors, matrices, or hypermatrices of any regular data type, or cells array. y gets the sizes of x.

dim

positive integer : index of the dimension / direction of x along which the order of x components must be inverted.

blockSize

a positive integer, sub-multiple of size(x,dim): number of rows, of columns, of pages etc in each block. Default value = 1

Description

flipdim(x, 1) inverts the order of rows of x.

flipdim(x, 2) inverts the order of columns of x.

flipdim(x, 3) inverts the order of pages of x. Etc.

The optional parameter blockSize allows splitting x in size(x,1)/blockSize blocks of blockSize rows (dim=1), or in size(x,2)/blockSize blocks of blockSize columns (dim=2), etc (dim>2) and to invert their order. In each block, the order of components (rows, columns, pages etc) is unchanged.

Examples

// Example 1: flip x rows (= components along the first dimension)
x = [1 2 3 4; 5 6 7 8]
y = flipdim(x, 1)

// Example 2: flip x columns (= components along the second dimension)
y = flipdim(x, 2)

// Example 3: flip x pages (= components along the third dimension)
x = matrix(1:24, [3 2 4])
y = flipdim(x, 3)

// Example 4: the first example with complex
x = [1+%i 2*%i 3 4; 5 6-%i 7 8*%pi*%i]
y = flipdim(x, 1)

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

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

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

// Polynomials:
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)

Examples using blockSize :

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] // Block size = 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]

// Error if blockSize does not divide the targeted dimension of x.
y = flipdim(x, 2, 5); // size(X) = [1 12] and blockSize=5 does not divide 12.

Example of results:

--> x
 x  =
 -5 -2  0  9
  0 -7 -6  9
 -1 -8 -7  8

--> flipdim(x, 1)
 ans  =
 -1 -8 -7  8
  0 -7 -6  9
 -5 -2  0  9

--> flipdim(x, 2)
 ans  =
  9  0 -2 -5
  9 -6 -7  0
  8 -7 -8 -1

--> x
 x  =
(:,:,1)
  9  4 -3
 -4 -8 -3

(:,:,2)
  5  8  9
  4  4  9

--> flipdim(x, 3)
 ans  =
(:,:,1)
  5  8  9
  4  4  9

(:,:,2)
  9  4 -3
 -4 -8 -3

--> x
 x  =
 -2  3 -5  9 -4 -8
  2  8  4 -9  6 -6
 -9  8  3  4 -3  4

--> flipdim(x, 2, 2)
 ans  =
 -4 -8 -5  9 -2  3
  6 -6  4 -9  2  8
 -3  4  3  4 -9  8

--> flipdim(x, 2, 3)
 ans  =
  9 -4 -8 -2  3 -5
 -9  6 -6  2  8  4
  4 -3  4 -9  8  3

See also

  • circshift — circularly shifts elements or subarrays of an array (regular, of structures, cells, custom)
  • fftshift — rearranges the fft output, moving the zero frequency to the center of the spectrum
  • ifftshift — inverse of fftshift
  • colon — Ranging operator. Addresses all elements along an array dimension or of a list.

History

VersionDescription
5.5.0
  • Extension to all regular data types: booleans, integers, strings, polynomials, rationals, graphic handles, etc.
  • New input argument blockSize to flip x blockwise.
Report an issue
<< circshift Matrix - shaping matrix >>

Copyright (c) 2022-2023 (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 Feb 25 08:49:19 CET 2020