MATLAB CSV文件读取

时间:2015-09-03 22:28:34

标签: matlab csv textscan

我有一个包含以下内容的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

有人可以推荐一种更好的方法来将整个文件读入数字矩阵吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你真正需要的就是这个;

fid = fopen('your.csv');
data = cell2mat(textscan(fid, '%f%f%f%f', 'Delimiter', ',', 'HeaderLines', 4));

如果你的csv只包含数值,你也可以使用csvreadhttps://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)