Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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 ofx
.- dim
positive integer : index of the dimension / direction of
x
along which the order ofx
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
History
Version | Description |
5.5.0 |
|
Report an issue | ||
<< circshift | Matrix manipulation | matrix >> |