1

我有一个包含以下两个字段的股票市场数据集:

  • 日期
  • 收盘价

我想在这个数据集上应用 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。

我需要绘制一个 DWT 图,其中 x 轴是日期,y 轴是任何一个或所有变量。

4

1 回答 1

3

计算 DWT

这实际上很简单。用于dwt获取近似系数和细节系数。例如,使用 daubechies 4-tap 小波的 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 轴值每隔一天跳过一次,因为近似和细节系数向量每个都有一半的样本X


演示代码

以下代码生成随机数据并将其放入结构数组中,每个元素都有两个字段:dateclosing_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 回答