reverses the order of (blocks of) rows, columns, pages.. of an array
y = flipdim(x, dim) y = flipdim(x, dim, blockSize)
vectors, matrices, or hypermatrices of any regular data type, or cells array.
y gets the sizes of x.
positive integer : index of the dimension / direction of x
along which the order of x components must be inverted.
a positive integer, sub-multiple of size(x,dim):
number of rows, of columns, of pages etc in each block. Default value = 1
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.
// 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); d(d == 0) = 1; 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. try y = flipdim(X, 2, 5); // size(X) = [1 12] and blockSize=5 does not divide 12. catch disp("size(X) = [1 12] and blockSize=5 does not divide 12"); end | ![]() | ![]() |
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
| Version | Description |
| 5.5.0 |
|