2017-06-15 75 views
0

我一直妄图为天做一个看似简单的事情 - 我想读一个txt文件,看起来像这样的数据:读取数据到Matlab

0.221351321 
    0.151351321 
    0.235165165 
    8.2254546 E-7 

成Matlab的。我已经能够使用的fscanf命令加载的.txt文件的列向量数据,就像这样:

U=fscanf(FileID, '%e') 

前提是我经历的第一个文件和“E”之前删除空间无论科学记数法发生在数据集中。

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

有没有一种方法让matlab读取数据,就像上面的例子(前面的'E'前面的空格)一样,并且把它放到列向量中?

对于任何知道PARI-GP的人来说,一种替代的修复方法是让输出中没有空格 - 但到目前为止,我还没有找到一种方法来清除E之前的空间符号,我无法预测科学记数法中的数字是否会出现在数据集中。

谢谢!

回答

1

谢谢大家的帮助,我找到了解决办法。有一种方法可以从PARI-GP中删除空间,以便输出.txt文件没有空格开始。我有输出设置为“prettymatrix”。人们需要输入以下内容:

? \o{0} 

改变其在科学记数法“E”之前消除了空间的输出为“原始”。

再次感谢您的帮助。

0

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

例如,

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

感谢您的及时回复! –

0

一个衬里:

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

strrep删除所有的空间,需要strsplit每条线作为一个单独的字符串,并str2double羽琴弦为数字。

+0

感谢您的回应!我目前正在尝试修复。 –

+0

我确定它会起作用,而且它似乎在工作,如果我正在使用这个文件的文件更小 - 它有十亿行! –