2015-11-24 96 views
0

我正在使用Octave從CSV文件導入數據(大約10^6行)。每行都有三列 - 時間戳(一整天的十進制小數部分),信號1和信號2.時間戳是一個雙精度值,我需要像這樣導入它。如何從數組中的數組中取值並將它們放入自己的數組中?

經過大量的實驗後,我終於拿出了double(float)格式的值。我用下面的代碼:

Output = textscan(FileID,'%s %f %f','Delimiter',',') 

這一呼籲得到cell類的變量,1×3(注 - 而不是3×10^6我的預期)。

尋找到變量,我看到:

Output = 
{ 
    [1,1] = 
    { 
    [1,1] = 0.85857643518518500000 
    [2,1] = 0.85857648148148100000 
    [3,1] = 0.85857652777777800000 
    [4,1] = 0.85857657407407400000 
    [5,1] = 0.85857662037037000000 
    [6,1] = 0.85857665509259300000 
    [7,1] = 0.85857670138888900000 
    [8,1] = 0.85857674768518500000 
    [9,1] = 0.85857679398148200000 
    [10,1] = 0.85857684027777800000 
    [11,1] = 0.85857688657407400000 
    [12,1] = 0.85857693287037000000 
    [13,1] = 0.85857697916666700000 
    [14,1] = 0.85857702546296300000 
    [15,1] = 0.85857707175925900000 
    [16,1] = 0.85857711805555600000 
    [17,1] = 0.85857715277777800000 
    [18,1] = 0.85857719907407400000 
-- less -- (f)orward, (b)ack, (q)uit 

通知它切斷在端部,但有更多的數據存在,包括1×3陣列(即信號1和信號2)中的其他項。

現在 - 如何從OutputMyData哪些應該有3列和100萬行輝煌的數據?也許我以不同的方式導入文件?我知道我不能使用dlmreadcsvread,因爲他們不會讓我拉雙精度數字(除非你知道方法)。我試過textread但沒有運氣(它告訴我,我有一堆NaN's)。

+0

'output {1}'給你什麼? – David

回答

1

輸出是一個單元格數組,其中每個條目對應於您的一個格式代碼。您不妨做到以下幾點:

my_strings = Output{1}; 
my_data = [Output{2}, Output{3}]; 

小旁白:除了您使用 的一個單元陣列的內容可以像一個正常的數組訪問{}而不是()。如果使用()與單元格數組,它將返回另一個單元格數組。

+0

謝謝馬特。爲什麼細胞與陣列有什麼關係? – SimaPro

相關問題