从 .txt 文件中读取数据到 Matlab
Reading data from .txt file into Matlab
几天来我一直在徒劳地尝试做一件看似简单的事情——我想从如下所示的 .txt 文件中读取数据:
0.221351321
0.151351321
0.235165165
8.2254546 E-7
进入 Matlab。我已经能够使用 fscanf 命令将 .txt 文件中的数据作为列向量加载,如下所示:
U=fscanf(FileID, '%e')
只要我先浏览文件并删除 'E' 之前的 space ,只要数据集中出现科学记数法。
因为我必须生成大量这样的集合,所以必须对每个 .txt 文件进行搜索和替换是不切实际的。
有没有办法让 matlab 读取出现的数据,如上例(space 在 'E' 之前),并将其放入列向量中?
对于任何了解 PARI-GP 的人来说,另一种解决方法是首先让输出中没有 spaces——但到目前为止我还没有找到一种方法来擦除 space =29=]在科学计数法'E'之前,我无法预测科学计数法的数字是否会出现在数据集中。
谢谢!
一种可能不是最好的简单方法是逐行读取,删除 space 并转换回浮点数。
例如,
x = []
tline = fgetl(FileID);
while ischar(tline)
x = [x str2num(tline(find(~isspace(tline))))]
tline = fgetl(FileID);
end
一个班轮:
data = str2double(strsplit(strrep(fileread('filename.txt'),' ',''), '\n'));
strrep
删除所有空格,strsplit
将每一行作为一个单独的字符串,str2double
将字符串转换为数字。
谢谢大家的帮助,我找到了解决办法。有一种方法可以从 PARI-GP 中消除 space,这样输出的 .txt 文件就没有 space 开头。我将输出设置为 "prettymatrix"。需要输入以下内容:
? \o{0}
将输出更改为 "Raw,",这消除了科学记数法中 "E" 之前的 space。
再次感谢您的帮助。
几天来我一直在徒劳地尝试做一件看似简单的事情——我想从如下所示的 .txt 文件中读取数据:
0.221351321
0.151351321
0.235165165
8.2254546 E-7
进入 Matlab。我已经能够使用 fscanf 命令将 .txt 文件中的数据作为列向量加载,如下所示:
U=fscanf(FileID, '%e')
只要我先浏览文件并删除 'E' 之前的 space ,只要数据集中出现科学记数法。
因为我必须生成大量这样的集合,所以必须对每个 .txt 文件进行搜索和替换是不切实际的。
有没有办法让 matlab 读取出现的数据,如上例(space 在 'E' 之前),并将其放入列向量中?
对于任何了解 PARI-GP 的人来说,另一种解决方法是首先让输出中没有 spaces——但到目前为止我还没有找到一种方法来擦除 space =29=]在科学计数法'E'之前,我无法预测科学计数法的数字是否会出现在数据集中。
谢谢!
一种可能不是最好的简单方法是逐行读取,删除 space 并转换回浮点数。
例如,
x = []
tline = fgetl(FileID);
while ischar(tline)
x = [x str2num(tline(find(~isspace(tline))))]
tline = fgetl(FileID);
end
一个班轮:
data = str2double(strsplit(strrep(fileread('filename.txt'),' ',''), '\n'));
strrep
删除所有空格,strsplit
将每一行作为一个单独的字符串,str2double
将字符串转换为数字。
谢谢大家的帮助,我找到了解决办法。有一种方法可以从 PARI-GP 中消除 space,这样输出的 .txt 文件就没有 space 开头。我将输出设置为 "prettymatrix"。需要输入以下内容:
? \o{0}
将输出更改为 "Raw,",这消除了科学记数法中 "E" 之前的 space。
再次感谢您的帮助。