Assume there\'s a myfile.csv with variable names in the first row and decimal numbers in the following ones. In Matlab I\'d like to read the header line and the decimal numbers
To extract the first line, you just need
fid = fopen('myfile.csv');
a = textscan(fid,'%s',1);
fclose(fid);
Open the file with fopen
, read the header line with textscan
, read the decimal numbers with fscanf
, and call fclose
in the end - only 4 lines in total :) Example input file:
Weight,Size,Count
1,2,3
4,5,6
7,8,9
10,11,12
Reading of this file:
fid = fopen('myfile.csv', 'r');
header = textscan(fid, '%[^,],%[^,],%[^,\r\n]', 1);
data = transpose(fscanf(fid, '%g,%g,%g\n', [3, Inf]));
fclose(fid);
for i = 1 : 3; disp(['"' cell2mat(header{i}) '"']); end;
disp(data);
Note that the data read by fscanf
need to be transposed (I emphasized this by writing transpose
instead of '
). The output:
"Weight"
"Size"
"Count"
1 2 3
4 5 6
7 8 9
10 11 12