У меня большой файл с разделителями табуляции (10000 строк, 15000 столбцов), и я хотел бы импортировать его в Matlab.
Я попытался импортировать его с помощью функцииъкантования текста следующим образом:
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 строк.