首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.txt文件中的数据读入Matlab

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

Stack Overflow用户
提问于 2017-06-15 01:05:04
回答 3查看 128关注 0票数 0

几天来,我一直试图做一件看似简单的事情,但没有成功--我想从一个.txt文件中读取数据,这个文件看起来像这样:

代码语言:javascript
复制
    0.221351321
    0.151351321
    0.235165165
    8.2254546 E-7

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

代码语言:javascript
复制
    U=fscanf(FileID, '%e')

只要我先检查文件,并删除数据集中科学符号中的“E”之前的空格。

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

是否有一种方法使matlab能够像上面的例子那样读取数据(在“E”之前的空格),并将其放入列向量中?

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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-17 19:50:44

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

代码语言:javascript
复制
    ? \o{0}

将输出改为“原始”,这消除了科学表示法中"E“之前的空格。

再次感谢你的帮助。

票数 1
EN

Stack Overflow用户

发布于 2017-06-15 01:28:08

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

例如,

代码语言:javascript
复制
x = []
tline = fgetl(FileID);
while ischar(tline)
    x = [x str2num(tline(find(~isspace(tline))))]
    tline = fgetl(FileID);
end
票数 0
EN

Stack Overflow用户

发布于 2017-06-15 08:43:56

一艘班轮:

代码语言:javascript
复制
data = str2double(strsplit(strrep(fileread('filename.txt'),' ',''), '\n'));

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44556954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档