我有一个包含以下内容的CSV文件:
Header line1
Space
Space
Space
,1,2,3,
1,81,82,83
我正在尝试将数据部分读入数字矩阵。 这是我实施的代码,但是我遇到了问题。
%To get the number of rows in the file
for i = 1:9
headerline = fgetl(fid);
headerline = strsplit(headerline,',')
end
fclose(fid);
fopen(fid);
% to get the data
C = textscan(fid,'%s','headerline',4,'EmptyValue',=Inf)
rowsize = size(C{1});
data = []
% to store data in matrix
for i = 1:rowsize
data = [data, strsplit(C{1}{i},',')];
end
有人可以推荐一种更好的方法来将整个文件读入数字矩阵吗?谢谢!
答案 0 :(得分:1)
你真正需要的就是这个;
fid = fopen('your.csv');
data = cell2mat(textscan(fid, '%f%f%f%f', 'Delimiter', ',', 'HeaderLines', 4));
如果你的csv只包含数值,你也可以使用csvread
(https://www.mathworks.com/help/matlab/ref/csvread.html)。
M = csvread(filename,R1,C1) reads data from the file starting at row offset R1 and column offset C1. For example, the offsets R1=0, C1=0 specify the first value in the file.
所以在这种情况下:
data = csvread('filename.csv', 4, 0)