ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

digitrevorder

入力を桁反転した順序に変更

構文

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

説明

digitrevorder は、周波数領域でのフィルター処理アルゴリズムで使用するためにフィルター係数のベクトルの要素をあらかじめ並べ替えるのに便利です。これらのアルゴリズムでは、実行時の効率を向上させるために、fftifft の変換は桁反転を行わずに計算されます。

y = digitrevorder(x,r) では、入力データを桁反転したものがベクトルまたは行列 y の形で返されます。桁反転の計算で使用される数体系 (進法) の基数 r には、2 ~ 36 の任意の整数を使用できます。x の長さは、r の整数倍でなければなりません。x が行列の場合、桁反転はサイズが 1 より大きい x の最初の次元で行われます。y のサイズは、x と同じになります。

[y,i] = digitrevorder(x,r) では、y = x(i) となるような、桁反転したベクトルまたは行列 y と桁反転したインデックス i が返されます。MATLAB® の行列ではインデックスが 1 から始まるため、y の最初のインデックスは 0 ではなく 1 になることに注意してください。

以下の表に、数値 0 ~ 15、および基数を 4 とした場合の対応する桁と桁反転した数値を示します。また、基数を 2 とした場合の対応するビットとビット反転したインデックスも示します。

線形インデックス

基数が 4 の場合の桁

桁反転

桁反転したインデックス

基数が 2 の場合のビット

基数が 2 の場合のビット反転 (bitrevorder)

ビット反転したインデックス

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

すべて折りたたむ

基数 3 の桁反転順

9 つの値を含むベクトルを基数 3 で桁反転順にした出力を得ます。基数 3 に変換してその桁数を反転して同じ結果を得ます。

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 

参考

| |

この情報は役に立ちましたか?