Please note that the recommended version of Scilab is 2026.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. - ygets the sizes of- x.
- dim
- positive integer : index of the dimension / direction of - xalong which the order of- xcomponents 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
| Version | Description | 
| 5.5.0 | 
 | 
| Report an issue | ||
| << circshift | Matrix - shaping | matrix >> |