如何在 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 中读取包含数字的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

Matlab读取文本文档txt文件

matlab中fgetlfgetsfread函数

MATLAB学习二:载入外部数据文件

VC对话框读取文件

如何使用 for 循环在 Matlab 中读取许多声音文件?

如何从 MATLAB 的 audioread 等 libsndfile 库中读取数组格式的音频文件