如何在 MATLAB 中读取包含数字的文本文件?
Posted
技术标签:
【中文标题】如何在 MATLAB 中读取包含数字的文本文件?【英文标题】:How can I read a text file containing numbers in MATLAB? 【发布时间】:2016-10-05 16:42:07 【问题描述】:我必须在文本文件的同一行中读取不同的数字。如果我不知道我必须阅读多少个数字,我如何将它们传递给一个数组(对于每一行)?
我考虑读取每个数字并将其传递给数组,直到找到换行符。但是我有很多文件,所以这样做需要很多时间。 使用每个文件中的这个数组,我必须构建绘图。有没有其他办法?
12 43 54 667 1 2 3 1 545 434 6 476
14 32 45 344 54 54 10 32 43 5 6 66
谢谢
【问题讨论】:
看看dlmread
一个文件的不同行是否有不同的条目数?
在1个文件中,每一行的数字是否相同?
感谢您的回答!使用我的 txt 文件中的数据,我将构建一个绘图。我的文本文件的第一行是绘图的名称(例如 May 2016 Temperature)。其他 5 行只有数字。每行都有相同数量的数字。我的情节应该有第一行中指定的名称。第 5 条数线是标准偏差。我必须将 2 个其他数字线(1÷4)传递到 2 个不同的数组中,并使用以下内容构建绘图:名称、X 和 Y 轴以及标准偏差。
【参考方案1】:
您可以打开每个文件并逐行读取,然后使用textscan(str,'%d')
将每一行转换为数组。
一个文件的示例:
fid = fopen('file.txt');
tline = fgetl(fid);
while ischar(tline)
C = textscan(str,'%d');
celldisp(C);
tline = fgetl(fid);
end
fclose(fid);
您必须为每个文件运行代码,并对数组 C 做一些事情。
您可以阅读函数textscan 的更多详细信息。
【讨论】:
【参考方案2】:在 MATLAB 中读取 ASCII 分隔的 数字 数据的方法是使用 dlmread
,正如 @BillBokeey 在评论中所建议的那样。这很简单
C = dlmread('file.txt');
【讨论】:
dlmread
的问题在于它创建了一个矩阵,而 Era.H 的问题提到每行都有未知数量的元素。
他/她没有提到每一行作为一个不同个元素,只是它是未知的。问题中的示例具有相同数量的元素,因此 dlmread
工作正常。以上是关于如何在 MATLAB 中读取包含数字的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章