我有一个这样组成的数据集:
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行都没有失败。我已经直观地检查了原始数据,看不出数据的性质是导致失败的原因。对失败的可能原因有什么建议吗?
发布于 2009-11-25 21:02:33
首先,使用datenum将年、月、日、小时、分钟、秒变量转换为时间:
datenum(2009,11,01,17,00,23)将返回自1/1/0000以来的天数。假设您将所有时间保存在一个名为time的向量中。现在,找到第一次/最后一次应该很容易:
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的向量,它包含每个时间的一些数据。
(我知道这可以优化很多,但对于这个答案,我更喜欢清晰度而不是性能)
https://stackoverflow.com/questions/1745600
复制相似问题