是否有导入Excel格式的.csv到Matlab比xlsread其它任何其他方式(FILE.CSV);
该文件我已经包含2830082行,xlsread似乎读书时,有1048576行的限制 - 其余的被切断。
该文件是这样的:
Time, Value
12:07:29, -1.13
12:07:29, -7.54
...
因此,使用csvread(..)是不会因为日期格式的工作。
是否有导入Excel格式的.csv到Matlab比xlsread其它任何其他方式(FILE.CSV);
该文件我已经包含2830082行,xlsread似乎读书时,有1048576行的限制 - 其余的被切断。
该文件是这样的:
Time, Value
12:07:29, -1.13
12:07:29, -7.54
...
因此,使用csvread(..)是不会因为日期格式的工作。
我发现阅读BIG CSV文件到Matlab是内存映射它们和解析的内容作为一个字符串的最快方法。 试着用这个例子的代码打:
fname = 'file.csv';
fstats = dir(fname);
% Map the file as one long character string
m = memmapfile(fname, 'Format', {'uint8' [ 1 fstats.bytes] 'asUint8'});
textdata = char(m.Data(1).asUint8);
% Find the end of each line, and use the line ends to form an index array
row = strfind(textdata, sprintf('\r\n'));
row = [[1; row(1:end-1)'+2] row' - 1];
% Fix-up if there is no \r\n at the end of the last line
if (row(end) < fstats.bytes - 2)
row = [row; [row(end) + 2, fstats.bytes]];
end
numrows = size(row, 1);
% Create output variables
Time = zeros(numrows, 1);
Value = zeros(numrows, 1);
% Parse each line of the data (I'm ignoring the first line for simplicity)
for RowNum = 2:numrows
data = textscan(textdata(row(RowNum,1):row(RowNum,2)), '%[^,]%f', 'delimiter', ',');
Time(RowNum) = datenum(data{:});
Value(RowNum) = data{2};
end
% Remove the file mapping
clear('m');