我有一個大的製表符分隔的文件(10000行,15000列),並想將其導入到Matlab。如何使用textscan讀取文件?
我已經嘗試使用textscan功能通過以下方式將其導入:
function [C_text, C_data] = ReadDataFile(filename, header, attributesCount, delimiter,
attributeFormats, attributeFormatCount)
AttributeTypes = SetAttributeTypeMatrix(attributeFormats, attributeFormatCount);
fid = fopen(filename);
if(header == 1)
%read column headers
C_text = textscan(fid, '%s', attributesCount, 'delimiter', delimiter);
C_data = textscan(fid, AttributeTypes{1, 1}, 'headerlines', 1);
else
C_text = '';
C_data = textscan(fid, AttributeTypes{1, 1});
end
fclose(fid);
AttributeTypes {1,1}是字符串至極描述變量類型對於每一列(在這種情況下,有14740浮子和260個字符串類型變量,因此AttributeTypes {1,1}的值爲'%f%f ......%f%s%s ...%s,其中%f重複14740次,%s爲260次) 。
當我嘗試執行
>> [header, data] = ReadDataFile('data/orange_large_train.data.chunk1', 1, 15000, '\t', types, size);
頭陣列似乎是正確的(列名已經被正確讀取)。
數據是一個1 x 15000數組(僅導入第一行而不是10000)並且不知道是什麼導致了這種行爲。
我想這個問題是在這一行造成的:
C_data = textscan(fid, AttributeTypes{1, 1});
,但不知道什麼可能是錯誤的,因爲在幫助說明一個類似的例子。
如果你們中的任何人提出瞭解決問題的方法,我將非常感激 - 如何讀取所有10000行。