【问题标题】:Scan text file into Matlab将文本文件扫描到 Matlab
【发布时间】:2016-06-30 08:08:04
【问题描述】:

我有一个文本文件,我想将它导入 matlab。以下是文本文件 (tempfile.txt) 的前 2 行:

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",

当我尝试使用 textscan 时:

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

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

【问题讨论】:

  • 你为什么使用星号?你在关注字段宽度吗?
  • 我只需要日期、时间和第四(111 & 73)列字段!

标签: matlab textscan


【解决方案1】:

您的问题是您的所有字段都是双引号 - 即它们是字符串,您不能将它们解析为浮点数/双精度数,而是将它们解析为字符串,然后在 Matlab 中将它们转换为双精度数:

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', ',')

【讨论】:

  • 行得通!非常感谢,你是我的英雄,因为我整天都在努力将数据导入 matlab。无论如何,我不确定为什么会有双引号,但正如你所建议的, str2num 解决了它。再次感谢!
【解决方案2】:

您似乎有一个逗号分隔值 CSV 文件,请尝试使用此功能:

M = csvread('tempfile.txt')

【讨论】:

  • 这是不可能的,因为 csvread 要求所有元素都是数字(我认为是这样),我的文本文件不符合此条件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多