0

たとえば、Haar ウェーブレットを使用して、arcsin(x) のウェーブレット分解を取得しようとしています。Matlabdwtまたはwavedec関数の両方を使用すると、係数を近似するための奇妙な値が得られます。ローパス Haar ウェーブレットのフィルターを適用することは半和を実行することと等しく、逆正弦の最大値は pi/2 であるため、近似係数は pi/2 を超えることはできないと想定していますが、このコードは次のとおりです。

x = linspace(0,1,128);
y = asin(x);
[cA, cD] = dwt(y, 'haar'); %//cA for approximating coefficients

で pi/2 より大きい値を返しますcA。何故ですか?

4

1 に答える 1

0

ここで混乱しているのは、Haar のフィルターが 1 レベルの近似係数を計算するときに隣接する 2 つの数値を平均するだけだと考えているためだと思います。スケーリング関数のエネルギー保存機能により、数値の各ペアは 2 ではなく sqrt(2) で除算されます。実際、次のコマンドを入力すると、特定のウェーブレット フィルターの動作を確認できます (この場合):

[F1,F2] = wfilters('haar','d')
F1 =
    0.7071    0.7071
F2 =
   -0.7071    0.7071

次に、単純なループを作成して、上記で取得した内容の有効性を確認できます。

CA_compare = zeros(1,64);
for k = 1 : 64
CA_compare(k) = dot( y(2*k-1 : 2*k), F1 );
end

次に、「CA_compare」に「cA」とまったく同じ値が含まれていることがわかります。

お役に立てれば。

于 2014-03-30T07:45:44.020 に答える