[問題] 如何能只讀取資料中指定的列數已回收

看板MATLAB作者 (小 美 )時間16年前 (2009/11/04 01:30), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
我重新描述一下資料樣子喔 我的資料長的大概像是 1 123 0.5 0.7 1 5 0.1 0.6 .... 1 45 0.7 0.1 1 5 0.7 0.1 1 123 0.6 0.3 等等 約有幾百萬列 我要做的事情是針對第二行中所有unique的元素取出他們的資料 以上面的資料來說明的話 第一次取 123的資料 也就是會取出 1 123 0.5 0.7 1 123 0.6 0.3 第二次取 5的資料 也就是會取出 1 5 0.1 0.6 1 5 0.7 0.1 這樣取資料的動作重複到所有unique的元素都作過計算之後才結束 可是因為每列的位元長度不同 並且每次要取的列數相對於所有資料的長度來說很少 所以若每一次都要讀取每一列之後 丟掉不要的列後再做分析 應該會浪費掉很多時間 譬如說 取123這筆的資料 可能在百萬列中 只佔了幾千列 因此想要請問MATLAB有沒有什麼辦法可以只讀取一行呢 我本來想要用textscan(fid, '%d\t%d\t%f\t%f', 'HeaderLines', N-1) % N是要讀取的第幾列 % 可是我不知道怎麼讓他只讀取那一列之後 就忽略不讀後面的資料 請問有什麼方法可以讀取資料中所給定的特定列數嗎? 謝謝 ※ 引述《smallmei (小 美 )》之銘言: : 我有一筆資料有好幾萬列 : 我想要讀取其中幾列 譬如是第10000, 30000, 100000列 : 如果一次將檔案全部load進來 就會面臨到記憶體不足的情形 : 本來有想要嘗試用textscan的方式 然後把前面的列數都當作headerlines : 但是現在問題在於 我不知道怎麼讓他只讀一列就終止><!!! : 請問有任何方法可以讓我不用load所有資料 卻可以讀取特定一列嗎? : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.73.215

11/04 10:31, , 1F
沒辦法,sequence檔案格式只能照順序一行一行讀
11/04 10:31, 1F

11/04 10:31, , 2F
你最多只能讀到想要的那行再把資料來拿用,沒辦法跳著讀
11/04 10:31, 2F

11/04 10:33, , 3F
除非將檔案重新存成direct格式的binary檔
11/04 10:33, 3F
文章代碼(AID): #1Ay6YdzI (MATLAB)