将文本文件扫描到 Matlab 中

Scan text file into Matlab

我有一个文本文件要导入到 matlab 中。这是文本文件的前 2 行 (tempfile.txt):

1,"4/26/2016","6:40:00 PM","111","0","13.45","NaN","ACTIVE","NaN",
2,"4/26/2016","6:40:30 PM","73","0","14.99","NaN","ACTIVE","NaN",

当我尝试使用文本扫描时:

fid = fopen('tempfile.txt');
data = textscan(fid, '%*d %s %s %s %*d %*d %*d %*s %*s', 'Delimiter', ',')

它只导入文本文件的第一行。我已经尝试将 \n 添加到 formatSpec 但它仍然不起作用。请帮忙!

您似乎有一个逗号分隔值 CSV 文件,试试这个函数:

M = csvread('tempfile.txt')

您的问题是您的所有字段都用双引号引起来 - 即它们是字符串,您不能将它们解析为 Floats/Doubles,而是将它们解析为字符串,然后在 Matlab 中将它们转换为 Doubles:

data = textscan(fid, '%d %s %s %s %s %s %s %s %s', 'Delimiter', ',')

可以很好地解析您的数据,然后使用 str2num 将您的数据转换回数字。为什么所有内容都用双引号引起来?

=============编辑============

因为你只需要 3 个字段,你应该这样做:

 fid = fopen('abc1.txt');
 data = textscan(fid, '%*d %s %s %s %*s %*s %*s %*s %*s', 'Delimiter', ',')