このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
入力を桁反転した順序に変更
y = digitrevorder(x,r)
[y,i] = digitrevorder(x,r)
digitrevorder
は、周波数領域でのフィルター処理アルゴリズムで使用するためにフィルター係数のベクトルの要素をあらかじめ並べ替えるのに便利です。これらのアルゴリズムでは、実行時の効率を向上させるために、fft
や ifft
の変換は桁反転を行わずに計算されます。
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 |
bitrevorder
| fft
| ifft