如何解决如何在MATLAB中导入大型文本文件
| 我的文件有一个标头,每个col的标头,然后是cols。我对仅将第4列的数据提取到MATLAB变量中感兴趣。 我遇到了一些问题。一种是大约有300万个单元格,当我使用导入向导时,MATLAB由于某种原因将其截断(它将文件截断为191,686行)。 这是文件的前几行:Channels: 1
Count: 3600000
Start: 40640.854055 04/07/11 16:29:50
End: 40640.895721 04/07/11 17:29:50
Date Time Time Stamp Time from Start EEG 1_8401
04/07/11 16:29:50 40640.687388 0.000000 3.854626e+001
04/07/11 16:29:50 40640.687388 0.001000 2.664706e+001
04/07/11 16:29:50 40640.687388 0.002000 1.425481e+001
04/07/11 16:29:50 40640.687388 0.003000 1.704369e+000
04/07/11 16:29:50 40640.687388 0.004000 -1.070827e+001
04/07/11 16:29:50 40640.687388 0.005000 -2.290569e+001
这是截断文件时用来导入文件的脚本:
function importfile(fileToRead1)
DELIMITER = \'\\t\';
HEADERLINES = 6;
% Import the file
newData1 = importdata(fileToRead1,DELIMITER,HEADERLINES);
vars = fieldnames(newData1);
for i = 1:length(vars)
assignin(\'base\',vars{i},newData1.(vars{i}));
end
我当时想用textscan
做这样的事情,但不确定如何跳过标头这样做并不断收到缓冲区溢出错误:
fid = fopen(\'scan1.dat\');
C = textscan(fid,\'%*d/%*d/%*d %*d:%*d:%*d %*f %*f %f\')
fclose(fid);
解决方法
这是使用TEXTSCAN的一种解决方案:
fid = fopen(\'scan1.dat\',\'r\');
dataCell = textscan(fid,\'%*s %*s %*f %*f %f\',\'HeaderLines\',6);
fclose(fid);
使用\'HeaderLines\'
参数忽略前6行,将日期和时间读取为字符串并忽略(比将它们读取为整数并忽略它们更紧凑),并且忽略浮点数据的前两列。 ѭ6的内容将是数据的最后一列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。