冷凝库存数据

时间:2009-11-16 23:37:57

标签: octave financial

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

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之间发生的所有tick数据。事情是这个代码,它是一个函数的一部分,似乎只在这个特定的行上失败,我发现它非常奇怪,因为它已被复制和粘贴,只有图45和50已被更改,以及其他类似的部分直到第105行的功能代码不会失败。我已经直观地检查了原始数据,并且看不出数据性质的原因是失败的原因。有关失败的可能原因的任何建议?

1 个答案:

答案 0 :(得分:0)

首先,使用datenum将您的年,月,日,小时,分钟,第二个变量转换为次数:

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

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

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

一分钟等于:

ONE_MINUTE = 1/24/60

现在,binning就像:

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的向量,每次都包含一些数据。

(我知道这可以进行很多优化,但我更倾向于澄清这个答案的性能)