将.txt文件中的数据读入Matlab

时间:2017-06-15 01:05:04

标签: matlab pari

我几天都在努力做一件看似简单的事情 - 我想从.txt文件中读取数据,如下所示:

    0.221351321
    0.151351321
    0.235165165
    8.2254546 E-7

进入Matlab。我已经能够使用fscanf命令将.txt文件中的数据作为列向量加载,如下所示:

    U=fscanf(FileID, '%e')

前提是我首先检查文件并删除数据集中出现科学记数法的“E”之前的空格。

由于我必须生成大量此类集,因此必须对每个.txt文件进行搜索和替换是不切实际的。

有没有办法让matlab按原样读取数据,如上例所示(“E”前面的空格),并将其放入列向量中?

对于任何了解PARI-GP的人来说,另一种解决办法是让输出首先没有空格 - 但到目前为止我还没有找到一种方法来删除科学记数法中'E'之前的空格,我无法预测科学记数法中的数字是否会出现在数据集中。

谢谢!

3 个答案:

答案 0 :(得分:1)

谢谢大家的帮助,我找到了解决方案。有一种方法可以从PARI-GP中消除空间,因此输出.txt文件没有空格开头。我将输出设置为" prettymatrix"。需要输入以下内容:

copy=original[:]

将输出更改为" Raw,"这消除了" E"之前的空间。用科学记数法。

再次感谢您的帮助。

答案 1 :(得分:0)

一种简单的方法,可能不是最好的,就是逐行读取,删除空格并转换回浮点数。

例如,

x = []
tline = fgetl(FileID);
while ischar(tline)
    x = [x str2num(tline(find(~isspace(tline))))]
    tline = fgetl(FileID);
end

答案 2 :(得分:0)

一个班轮:

data = str2double(strsplit(strrep(fileread('filename.txt'),' ',''), '\n'));

strrep删除所有空格,strsplit将每行作为单独的字符串,str2double将字符串转换为数字。