2009-11-16 68 views
0

我有由作爲這樣的數據集:冷凝庫存數據

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 

我使用八度來操縱該數據。我希望使用此刻度數據以5,10和30分鐘的間隔創建包含數據的各種文件。通過這種格式,他們可以被繪製成條形圖/燭臺圖並進行進一步的計算。但是,我真的不知道如何處理循環數據來創建這樣的文件。

我熟悉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 

代碼檢查「分鐘」矢量鞋履原料及應提取和代碼創建一個新的「min_5_vec」向量,其中包含每小時HH:45:00和HH:49:59之間出現的所有刻度數據。事情是這個代碼是一個函數的一部分,它似乎只在這條特定的行上失敗,我發現它非常奇怪,因爲它已經被複制和粘貼,只有數字45和50被改變了,其他類似的部分直到第105行的功能代碼不會失敗。我直觀地檢查了原始數據,並且可以看到沒有任何原因導致數據的性質成爲失敗的原因。有關可能的失敗原因的任何建議?

回答

0

首先,使用datenum你的年,月,日,時,分,秒的變量轉換成時間:

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

將返回自1/1/0000天過去數。 可以說你將所有的時間都保存在一個稱爲時間的向量中。 現在,它應該很容易找到你的第一個/最後一次:

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

一分鐘等於:

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 

ONE_MINUTE = 1/24/60 

現在的合併就像做

只是爲了舉例,我計算了每個bin中數據的平均值。我假設你有一個稱爲數據的載體,每次都包含一些數據。

(我知道這可以優化很多,但我更喜歡這個答案的性能清晰度)