DWT の計算
これは実際には簡単です。dwt
近似係数と詳細係数を取得するために使用します。たとえば、daubechies 4 タップ ウェーブレットを使用する DWT は次のようになります。
[cA, cD] = dwt(X, 'db4')
あなたのデータはどこにX
ありますか。
の各サンプルにX
複数のフィールドがあり、DWT を特定のフィールド (たとえば ) だけに適用する場合は、X.closing_price
角かっこを追加します。
[cA, cD] = dwt([X.closing_price], 'db4')
このソリューションでは、データ サンプルが一定の時間間隔で取得されることを前提としています。
データをプロットするには、日番号に対応する別のベクトルを準備する必要があります。
t = 1:2:length(X);
x 軸の値は 1 日おきにスキップします。これは、近似係数ベクトルと詳細係数ベクトルがそれぞれ のサンプルの半分を持っているためですX
。
デモコード
次のコードは、ランダムなデータを生成し、それを構造体の配列に入れます。各要素には と の 2 つのフィールドがdate
ありclosing_price
ます。
%# Generate some random data
C = cell(31, 2);
C(:, 1) = arrayfun(@(z)[num2str(z), '-Oct-03'], 1:length(C), 'Un', 0);
C(:, 2) = num2cell(100 * randn(1, length(C)));
X = cell2struct(C, {'date', 'closing_price'}, 2);
さて、ビジネスに:
%# Apply DWT
[cA, cD] = dwt([X.closing_price], 'db4');
%# Prepare x-axis values
t = 1:2:length(X);
%# Plot result with respect to date
figure
subplot(2, 1, 1), plot(t, cA)
title('Approximation coefficients'), xlabel('day'), ylabel('C_A')
subplot(2, 1, 2), plot(t, cD)
title('Detail coefficients'), xlabel('day'), ylabel('C_D')
これはあなたが得るべきものです:
それが役立つことを願っています!