Documentation

This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

bitrevorder

Permute data into bit-reversed order

Syntax

y = bitrevorder(x)
[y,i] = bitrevorder(x)

Description

bitrevorder is useful for pre-arranging filter coefficients so that bit-reversed ordering does not have to be performed as part of an fft or inverse FFT (ifft) computation. This can improve run-time efficiency for external applications or for Simulink® blockset models. Both MATLAB® fft and ifft functions process linear input and output.

    Note   Using bitrevorder is equivalent to using digitrevorder with radix base 2.

y = bitrevorder(x) returns the input data in bit-reversed order in vector or matrix y. The length of x must be an integer power of 2. If x is a matrix, the bit-reversal occurs on the first dimension of x with size greater than 1. y is the same size as x.

[y,i] = bitrevorder(x) returns the bit-reversed vector or matrix y and the bit-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 7, the corresponding bits, and the bit-reversed numbers.

Linear Index

Bits

Bit- Reversed

Bit-Reversed Index

0

000

000

0

1

001

100

4

2

010

010

2

3

011

110

6

4

100

001

1

5

101

101

5

6

110

011

3

7

111

111

7

Examples

collapse all

Create a column vector and obtain its bit-reversed version. Verify by displaying the binary representation explicitly.

x = (0:15)';
v = bitrevorder(x);

x_bin = dec2bin(x);
v_bin = dec2bin(v);

T = table(x,x_bin,v,v_bin)
T = 

    x     x_bin    v     v_bin
    __    _____    __    _____

     0    0000      0    0000 
     1    0001      8    1000 
     2    0010      4    0100 
     3    0011     12    1100 
     4    0100      2    0010 
     5    0101     10    1010 
     6    0110      6    0110 
     7    0111     14    1110 
     8    1000      1    0001 
     9    1001      9    1001 
    10    1010      5    0101 
    11    1011     13    1101 
    12    1100      3    0011 
    13    1101     11    1011 
    14    1110      7    0111 
    15    1111     15    1111 

See Also

| |

Introduced before R2006a

Was this topic helpful?