Using textscan with txt
Mostra commenti meno recenti
Hi MATLAB Experts,
I am trying to use textscan function to read txt file, which is actually having more than 100,000 rows and 100 columns.
In order to convert data into a matrix in MATLAB, I am using for loops as follows:
fid = fopen(filename,'r');
tmp = textscan(fid,'%s','Delimiter','\n'); % there are many different data format existing (i.e. char/cell/double)
USdata = [];
for n = 2:length(tmp{1})
temp_data = regexp(tmp{1}{n},'\t','split');
USdata = [USdata; temp_data];
end
However, it takes too long since it has more than 100,000 rows. What would be the most efficient way to do it??
Thanks for any help you could provide in advance.
Jake
Risposta accettata
Più risposte (1)
Walter Roberson
il 25 Apr 2016
ncol = 100;
fmt = strjoin(repmat({'%[^\t]'},1,ncol),'\t');
fid = fopen(filename,'r');
tmp = textscan(fid, fmt, 'CollectOutput', 1));
fclose(fid);
data = tmp{1};
If you know the column formats, it would be better to construct a more specific fmt. You might want to adapt some of the methods I use in http://www.mathworks.com/matlabcentral/answers/280772-how-can-i-load-target-data-on-student-alcohol-consumption#answer_219273
Categorie
Scopri di più su Large Files and Big Data in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!