Documentation

This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

digitrevorder

Permute input into digit-reversed order

Syntax

y = digitrevorder(x,r)
[y,i] = digitrevorder(x,r)

Description

digitrevorder is useful for pre-ordering a vector of filter coefficients for use in frequency-domain filtering algorithms, in which the fft and ifft transforms are computed without digit-reversed ordering for improved run-time efficiency.

y = digitrevorder(x,r) returns the input data in digit-reversed order in vector or matrix y. The digit-reversal is computed using the number system base (radix base) r, which can be any integer from 2 to 36. The length of x must be an integer power of r. If x is a matrix, the digit reversal occurs on the first dimension of x with size greater than 1. y is the same size as x.

[y,i] = digitrevorder(x,r) returns the digit-reversed vector or matrix y and the digit-reversed indices i, such that y = x(i). Recall that MATLAB® matrices use 1-based indexing, so the first index of y will be 1, not 0.

The following table shows the numbers 0 through 15, the corresponding digits and the digit-reversed numbers using radix base-4. The corresponding radix base-2 bits and bit-reversed indices are also shown.

Linear Index

Base-4 Digits

Digit- Reversed

Digit- Reversed Index

Base-2 Bits

Base-2 Reversed (bitrevorder)

Bit- Reversed Index

0

00

00

0

0000

0000

0

1

01

10

4

0001

1000

8

2

02

20

8

0010

0100

4

3

03

30

12

0011

1100

12

4

10

01

1

0100

0010

2

5

11

11

5

0101

1010

10

6

12

21

9

0110

0110

6

7

13

31

13

0111

1110

14

8

20

02

2

1000

0001

1

9

21

12

6

1001

1001

9

10

22

22

10

1010

0101

5

11

23

32

14

1011

1101

13

12

30

03

3

1100

0011

3

13

31

13

7

1101

1011

11

14

32

23

11

1110

0111

7

15

33

33

15

1111

1111

15

Examples

collapse all

Obtain the digit-reversed, radix base-3 ordered output of a vector containing 9 values. Obtain the same result by converting to base 3 and reversing the digits.

x = (0:8)';

y = digitrevorder(x,3);

c1 = dec2base(x,3);
c2 = fliplr(c1);
c3 = base2dec(c2,3);

T = table(x,y,c1,c2,c3)
T = 

    x    y    c1    c2    c3
    _    _    __    __    __

    0    0    00    00    0 
    1    3    01    10    3 
    2    6    02    20    6 
    3    1    10    01    1 
    4    4    11    11    4 
    5    7    12    21    7 
    6    2    20    02    2 
    7    5    21    12    5 
    8    8    22    22    8 

See Also

| |

Introduced before R2006a


Was this topic helpful?