ドキュメンテーション

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

ifwht

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

構文

y = ifwht(x)
y = ifwht(x,n)
y = ifwht(x,n,ordering)

説明

y = ifwht(x) では、入力 x の逆離散高速ウォルシュ・アダマール変換の係数が返されます。x が行列の場合、逆高速ウォルシュ・アダマール変換は、x の列について計算されます。逆高速ウォルシュ・アダマール変換は、2 のべき乗の長さの信号に対してのみ使用できます。x の長さが 2 のべき乗より短い場合は、その長さをゼロでパディングして次の 2 のべき乗にした後に処理されます。

y = ifwht(x,n) では、n 点の逆離散ウォルシュ・アダマール変換が返されます。ここで、n は 2 のべき乗でなければなりません。

y = ifwht(x,n,ordering) では、返される逆ウォルシュ・アダマール変換係数に使用する次数が指定されます。次数を指定するには、長さ n の値を入力するか、n に空ベクトル ([]) を指定して既定値を使用します。次数に対して有効な値は、次のとおりです。

次数説明
'sequency'交差数値の昇順の係数で、各行にはさらにゼロクロッシングが含まれます。これは既定の次数です。
'hadamard'標準の Hadamard order の係数。
'dyadic'Gray code order の係数で、ある係数からその隣の係数で 1 ビットの変更が発生します。

すべて折りたたむ

心電図 (ECG) 信号を使用してウォルシュ・アダマール変換の機能を説明します。ECG 信号は、一般に非常に大きく、また後の解析および検索のために保存される必要があります。ウォルシュ・アダマール変換は、ストレージ容量の圧縮を行うことから、特にこういった利用に適しています。また、信号の再構成も高速です。

ECG 信号から開始します。ECG 信号をコピーして長い信号を作成し、ランダム ノイズをいくつか挿入します。

xe = ecg(512);
xr = repmat(xe,1,8);
x = xr + 0.1.*randn(1,length(xr));

高速ウォルシュ・アダマール変換を使用して信号を変換します。元の信号と変換後の信号をプロットします。

y = fwht(x);

subplot(2,1,1)
plot(x)
xlabel('Sample index')
ylabel('Amplitude')
title('ECG Signal')

subplot(2,1,2)
plot(abs(y))
xlabel('Sequency index')
ylabel('Magnitude')
title('WHT Coefficients')

プロットは、信号エネルギーのほとんどが約 1100 以下の低い交差数値にあることを示しています。4096 個の係数のうち最初の 1024 個のみを保存します。保存したこれらの係数のみによる信号の正確な再構成を試みます。

y(1025:length(x)) = 0;
xHat = ifwht(y);

figure
plot(x)
hold on
plot(xHat)
xlabel('Sample Index')
ylabel('ECG Signal Amplitude')
legend('Original','Reconstructed')

再現された信号は、元の信号に非常に近くなりますが、1/4 のサイズに圧縮されています。保存される係数が多くなるほど解像度の向上とノイズの増加とのトレードオフが生じ、他方、少なくなればピークのロスが生じる可能性があります。

アルゴリズム

逆高速ウォルシュ・アダマール変換のアルゴリズムは、逆 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.

参考

| | | |

R2008b で導入