find number of columns on text file
10 次查看(过去 30 天)
显示 更早的评论
Is it possible to determine the number of columns in a text file prior to importing the data into matlab?
I can determine the number of rows as follows:
fid = fopen('myFile.txt','rt');
nLines = 0;
while (fgets(fid) ~= -1),
nLines = nLines+1;
end
fclose(fid);
However, is there a way of returning the number of columns? Some of the text files that I need to import contain several column and others contain only one column therefore I require the number of columns in a specific text file in order to use textscan. Note I cannot use importdata or dlmread as some of the files contain nans.
Amended: Consider I create two text files:
d1 = 1+(30-1).*rand(365,3);
d2 = 1+(30-1).*rand(365,1);
mkdir('C:\Matlab_Q');
filename = 'C:\Matlab_Q\ex1.txt';
fid = fopen(filename,'wt');
fprintf(fid,'%f\n',d2);
fclose(fid);
filename = 'C:\Matlab_Q\ex2.txt';
fid = fopen(filename,'wt');
fprintf(fid,'%f\t%f\t%f\n',d1');
fclose(fid);
I now wish to read the number of columns in each text file:
FNames = {'ex1','ex2'};
delimiter = '\t';
for i = 1:length(FNames);
fid = fopen(fullfile('C:\Matlab_Q',[FNames{i} '.txt']),'rt');
tLines = fgets(fid);
numCols{i} = numel(strfind(tLines,delimiter)) + 1;
fclose(fid);
end
This solution returns 1 where it should return 1 and 3. How can this be solved?
0 个评论
采纳的回答
José-Luis
2012-11-20
编辑:José-Luis
2012-11-20
delimiter = ' '; %or whatever
fid = fopen('myFile.txt','rt');
tLines = fgets(fid);
numCols = numel(strfind(tLines,delimiter)) + 1;
fclose(fid);
3 个评论
Mitchell Thayer
2013-1-7
Snagged that piece of code for use in a parsing function. Thanks!
-:- Mitchell
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!