【问题标题】:Condensing Stock Data压缩库存数据
【发布时间】:2015-12-25 21:21:24
【问题描述】:

我有一个这样组成的数据集:

2009,11,01,17,00,23,1.471700,1.472000

2009,11,01,17,01,04,1.471600,1.471900

2009,11,01,17,01,09,1.471900,1.472100

2009,11,01,17,01,12,1.472000,1.472300

2009,11,01,17,01,13,1.471900,1.472200

2009,11,01,17,01,14,1.471600,1.471900

2009,11,01,17,01,18,1.471700,1.472000

2009,11,01,17,01,18,1.471900,1.472200

我正在使用 Octave 来处理这些数据。我想使用这个刻度数据来创建包含 5、10 和 30 分钟间隔的数据的各种文件。使用这种格式,它们可以绘制为条形图/烛台图并执行进一步的计算。但是,我真的不知道如何处理数据循环以创建此类文件。

我熟悉 Octave 并使用此软件,但此特定任务可以在其他一些软件中执行,以生成文件以供以后导入 Octave。

我第一次尝试在 Octave 中编写此代码时出现此错误:-

error: A(I,J,...) = X: dimensions mismatch
error: called from:
error:  /home/andrew/Documents/forex_convert/tick_to_min.m at line 105, column 25

产生它的代码是

[i,j]=find(fMM>=45 & fMM<50);

min_5_vec(1:length(i),1)=tick_data(min(i):max(i),1);   % line 105

代码检查“分钟”向量 fMM 并应提取并创建一个新的“min_5_vec”向量,其中包含每小时发生在 HH:45:00 和 HH:49:59 之间的所有刻度数据。问题是这段代码,它是函数的一部分,似乎只在这个特定的行上失败,我觉得很奇怪,因为它已经被复制和粘贴,只有数字 45 和 50 被更改,其他类似的部分直到第 105 行的功能代码不会失败。我已经目视检查了原始数据,并且看不出数据的性质是导致失败的原因。对于失败的可能原因有什么建议吗?

【问题讨论】:

    标签: octave financial


    【解决方案1】:

    首先,使用 datenum 将您的年、月、日、小时、分钟、秒变量转换为时间:

    datenum(2009,11,01,17,00,23)
    

    将返回自 0000 年 1 月 1 日以来过去的天数。 假设您将所有时间保存在一个称为时间的向量中。 现在,应该很容易找到您的第一次/最后一次:

    first = min(times); 
    last = max(times);
    

    一分钟等于:

    ONE_MINUTE = 1/24/60
    

    现在分箱完成如下:

    index = 1;
    means = [];
    for t = first:5*ONE_MINUTE:last
        current_bin = (times>=t) & (times<t+5*ONE_MINUTE)
        % do something with all the data for which current_bin==1
        means(index) = mean(data(current_bin));
        index = index+1;
    end
    

    仅作为示例,我计算了每个 bin 中数据的均值。我假设您有一个名为 data 的向量,其中每次都包含一些数据。

    (我知道这可以优化很多,但我更喜欢这个答案的清晰度而不是性能)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      相关资源
      最近更新 更多