Ask an expert. Trust the answer.

Your academic and career questions answered by verified experts

Matlab: read only header line from a .csv-file

Date: 2022-07-27 10:46:59

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 separately. So far, I've been doing the following to extract the header line: 

 

 fid = fopen('myfile.csv');
a = textscan(fid,'%s','Delimiter','\n');
b = a{1,1};
fclose(fid);
c = textscan(b,'%s','Delimiter',',');
d = c{1}

Then, I use the csvread command to extract the numerical part of the file. But there should be a (much) easier way to do it! First, I don't want to read the whole file (as with a = textscan(fid,'%s','Delimiter','\n');) to extract only the first line. Second, it looks wrong to use 7 lines of code to do it - can it be done with less?

I'd be thankful for any constructive suggestions. 

Answers: 

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

 


Why Matlabhelpers ?

Our Matlab assignment helpers for online MATLAB assignment help service take utmost care of your assignments by keeping the codes simple yet of high-quality. We offer the most reliable MATLAB solutions to students pursuing their Computer Science course from the Monash University, the University of Sydney, the University of New South Wales, the University of Melbourne; to name a few. Approach us today for best Matlab solutions online!

whatsApp order on matlabhelpers.com

telegram order on matlabsolutions.com