2015-11-19 90 views
0

我有672個樣本像這樣的.txt文件:如何導入這些數據並將其導出到Excel文件中?

{  
sleep:1360.36, 
eat:4.36, 
live:16.37, 
travel:22.18, 
work:22, 
school:0.84, 
vt:386.87 
}, 

我希望把他們在{sleep, eat, live, travel, work, school, vt}在一個行和列表示的每個樣本所代表的Excel文件時,用相應數字相匹配的。我從來沒有在matlab上處理這種格式的文本文件,所以我不知道如何做到這一點。誰能幫我?

+1

等待,所以你想把它導出到csv(即該excel可以打開)?或者你想將它們導入到Matlab中,我很困惑。您的行分隔符是「,」,列分隔符是「:」,您可以通過設置分隔符將其放入excel中,或使用'textscan'或'dmlread'將其放入matlab中 – GameOfThrows

+0

謝謝您的回答。我想將它們導出爲.csv,並認爲通過matlab實現它的最佳方法是。我認爲這是因爲這是一週內15到15分鐘的數據,我想通過將它們平均分爲4組(如果這聽起來很複雜,抱歉),將它們變成1小時樣本。這是可能的還是太複雜? –

+0

不,它不是太複雜。然而,通常預期會有一些原始努力的證據。對循環中文件的打開和讀取部分做一點研究。把一些東西放在一起,如果你遇到麻煩,回來編輯你的問題,包括你的代碼,你收到的錯誤和錯誤發生的地方。 – Jeeped

回答

0

很可能,如果你熟悉它,你可以在Matlab中完成它(儘管在Excel中它也很容易實現)。加載你的文件(不需要轉換它,Matlab讀取txt文件)。你可以這樣做:

fileID = fopen('test2.txt'); %//Your file name 
Input = textscan(fileID,'%s %f','Delimiter',':'); 
GoodRows = find(~isnan(Input{2})); 
column1 = Input{1}(GoodRows,:); //Column 1 is in the format of Cells (since you are storing Strings 
column2 = Input{2}(GoodRows,:); //Column 2 is in the format of a Matrix, which will allow you to take numbers and do averages etc. 

細胞和基質份額指標,這樣你就可以在單元格最終重新格式化您的數據並將其導出在Matlab。

column1 = 

'sleep' 
'eat' 
'live' 
'travel' 
'work' 
'school' 
'vt' 

column2 = 

1.0E + 003 *

1.3604 
0.0044 
0.0164 
0.0222 
0.0220 
0.0008 
0.3869 

==============編輯=============== 如果在字符串後有多個列,即: sleep,1.5,1.4,1.3

如果要繼續使用textscan,則需要指定有多少個列。這是通過做:

Input = textscan(fileID,'%s %f %f %f %f','Delimiter',':'); //% add %f for each numeric column. 

或者

Input = textscan(fileID,'%s repmat('%f',[1,N])]','Delimiter',':'); %// where N is the number of numeric columns you have. 
+0

再次感謝您。我嘗試了你的建議,但它不認爲column1與下一個樣本相同: 我得到的例子: 睡覺,吃,住,旅行,工作,學校,睡覺,吃,旅遊,工作,學校,vt,睡覺,吃,住,旅遊,工作,學校,vt, 我只想要這個變量被識別一次,所以我得到這樣一個表: 睡覺吃實時旅行工作學校VT 1 1.36 0.044 0.164 0.0222 0.0220 0.0008 0.3869 其中1,2,3,4,5是樣本。希望我自己清楚 –

+0

我發佈了此評論作爲答案,因此更好理解 –

+0

@JoãoFrancisco更新了包含多列的答案。 – GameOfThrows

0

您可以從Excel導入數據到Matlab使用xlswrite使用xlsread和出口數據。看到documentation

語法

xlswrite(filename,A,sheet,xlRange) 

其中A可能是一個單元陣列,其中所述細胞包含字符串的數目,sheet是Excel工作表的名稱和xlRange是在Excel工作表(例如,範圍: A1:B5)。

代碼示例:

A = {'Column1', 'Column2', 'Column3'; 1, 2, 3}; 
xlswrite('example.xls', A, 'ExampleSheet', 'A1:B3'); 

一些提示:

  • 如果你知道行,你只能在運行時數據的columsn的數量,但還是想給你必須以某種方式組裝的範圍(行,使用sprintf很容易,列名更難(A,B,C,..,Z,AA,AB,...))
  • 如果您的計算機上沒有Excel,將獲得csv文件(請參閱文檔)
  • 儘管每次撥打xlswrite時都會返回相當快,但系統仍在運行。如果另一個電話xlswrite來得太快,您可能會意外(延遲相關)錯誤,無法避免它們,然後等待足夠的時間。我通常會收集我的數據,然後將所有內容一次性寫入Excel文件。
相關問題