Main Content

fwht

高速ウォルシュ・アダマール変換

説明

y = fwht(x) では、入力 x の離散ウォルシュ・アダマール変換の係数が返されます。

y = fwht(x,n) では、n 点の離散ウォルシュ・アダマール変換が返されます。

y = fwht(x,n,ordering) では、返されるウォルシュ・アダマール変換係数に使用する次数が指定されます。

すべて折りたたむ

この例は、単純な入力信号とそのウォルシュ・アダマール変換を示します。

x = [19 -1 11 -9 -7 13 -15 5];
y = fwht(x)
y = 1×8

     2     3     0     4     0     0    10     0

y の 0、1、3 および 6 の位置の値は非ゼロです。交差数値 0、1、3、6 でウォルシュ関数を形成して、x を再作成します。

w0 = [1 1 1 1 1 1 1 1];
w1 = [1 1 1 1 -1 -1 -1 -1];
w3 = [1 1 -1 -1 1 1 -1 -1];
w6 = [1 -1 1 -1 -1 1 -1 1];
w = y(0+1)*w0 + y(1+1)*w1 + y(3+1)*w3 + y(6+1)*w6
w = 1×8

    19    -1    11    -9    -7    13   -15     5

プログラムによって非ゼロ値およびウォルシュ関数を抽出し、同じ結果を得ます。

ww = fwht(eye(length(y)))*length(y)
ww = 8×8

     1     1     1     1     1     1     1     1
     1     1     1     1    -1    -1    -1    -1
     1     1    -1    -1    -1    -1     1     1
     1     1    -1    -1     1     1    -1    -1
     1    -1    -1     1     1    -1    -1     1
     1    -1    -1     1    -1     1     1    -1
     1    -1     1    -1    -1     1    -1     1
     1    -1     1    -1     1    -1     1    -1

nz = find(y);
w = sum(y(nz)'.*ww(nz,:))
w = 1×8

    19    -1    11    -9    -7    13   -15     5

入力引数

すべて折りたたむ

入力信号。行列またはベクトルとして指定します。x が行列の場合、高速ウォルシュ・アダマール変換は、x の各列について計算されます。fwht は、2 のべき乗の長さの信号に対してのみ使用できます。x の長さが 2 のべき乗より短い場合は、その長さにゼロを付加して次の 2 のべき乗にした後に処理されます。

離散ウォルシュ・アダマール変換の点。正の偶数の整数スカラーとして指定します。xn は同じ長さでなければなりません。xn より長い場合は、x は切り捨てられます。xn より短い場合は、x にゼロが付加されます。

ウォルシュ・アダマール変換係数の順序付け。'sequency''hadamard'、または 'dyadic' として指定します。順序付けを指定するには、長さ n の値を入力するか、n に空ベクトル ([]) を指定して既定値を使用しなければなりません。順序付けに対して有効な値は、次のとおりです。

順序付け説明
'sequency'交差数値の昇順の係数で、各行にはさらにゼロクロッシングが含まれます。これは既定の順序付けです。
'hadamard'標準のアダマール順序付けの係数。
'dyadic'グレイ符号順序付けの係数で、ある係数からその隣の係数で 1 ビットの変更が発生します。

ウォルシュ関数と順序付けの詳細については、ウォルシュ・アダマール変換を参照してください。

出力引数

すべて折りたたむ

離散ウォルシュ・アダマール変換。行列またはベクトルとして返されます。

アルゴリズム

高速ウォルシュ・アダマール変換アルゴリズムは、FFT におけるクーリー・テューキーのアルゴリズムとほぼ同じです。いずれも変換係数の決定にバタフライ構造を使用します。スケーリングの詳細については、参考文献を参照してください。

参照

[1] Beauchamp, Kenneth G. Applications of Walsh and Related Functions: With an Introduction to Sequency Theory. London: Academic Press, 1984.

[2] Beer, Tom. “Walsh Transforms.” American Journal of Physics. Vol. 49, 1981, pp. 466–472.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2008b で導入

参考

| | | |