Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ifwht

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

説明

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

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

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

すべて折りたたむ

心電図 (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')

Figure contains 2 axes objects. Axes object 1 with title ECG Signal, xlabel Sample index, ylabel Amplitude contains an object of type line. Axes object 2 with title WHT Coefficients, xlabel Sequency index, ylabel Magnitude contains an object of type line.

プロットは、信号エネルギーのほとんどが約 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')

Figure contains an axes object. The axes object with xlabel Sample Index, ylabel ECG Signal Amplitude contains 2 objects of type line. These objects represent Original, Reconstructed.

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

入力引数

すべて折りたたむ

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

データ型: single | double

逆離散ウォルシュ・アダマール変換の点数。正の偶数の整数スカラーとして指定します。n は 2 のべき乗でなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ウォルシュ・アダマール変換係数の順序付け。次のいずれかとして指定します。

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

順序付けを指定するには、長さ n の値を入力するか、n に空ベクトル ([]) を指定して既定値を使用しなければなりません。ウォルシュ関数と順序付けの詳細については、ウォルシュ・アダマール変換を参照してください。

アルゴリズム

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

参考

| | | |