1

次の 2 つのフィールドを含む株式市場データ セットがあります。

  • 日にち
  • 終値

このデータセットに DWT を適用し、Matlab を使用してグラフをプロットしたいと思います。誰かが私にそれを行う方法を教えてもらえますか..

ありがとうございました

編集

ここにデータセットの例があります

日付、始値、高値、安値、終値、出来高

24-Oct-03,29.12,29.2,28.93,29.16,3069600

23-Oct-03,29.5,29.69,29.34,29.55,3414200

22-Oct-03,29.95,29.95,29.49,29.65,6659700

CSVです。

x 軸が日付で、y 軸が変数のいずれかまたはすべてである DWT グラフをプロットする必要があります。

4

1 に答える 1

3

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')

これはあなたが得るべきものです:

期待される結果

それが役立つことを願っています!

于 2012-07-22T12:51:48.347 に答える