gpt4 book ai didi

matlab - 从大型文本文件中读取 Matlab 中的数据

转载 作者:行者123 更新时间:2023-12-02 22:28:21 25 4
gpt4 key购买 nike

我有一个包含大量数据行的文本文件,这些数据的列之间用空格分隔。我如何使用 MATLAB 读入这些数据?我尝试了以下代码但没有成功:

fid = fopen('file.txt');

M = textscan(fid, '%f %f %f');

x = M{1};

y = M{2};

z = M{3};

数据如下图(各列不等距):

4.55686    0.88751    4.71368       0.00000       0.00000   879.7   0.143   1.77  1  1  Iron - Alpha

4.55686 0.88751 4.71368 0.00000 0.00000 879.7 0.143 1.77 1 1 Iron - Alpha

4.55686 0.88751 4.71368 0.00000 0.00000 879.7 0.143 1.77 1 1 Iron - Alpha

4.55686 0.88751 4.71368 0.00000 0.00000 879.7 0.143 1.77 1 1 Iron - Alpha

4.55686 0.88751 4.71368 0.00000 0.00000 879.7 0.143 1.77 1 1 Iron - Alpha

4.55686 0.88751 4.71368 0.00000 0.00000 879.7 0.143 1.77 1 1 Iron - Alpha

最佳答案

首先,考虑您的数据文件。每行包含 10 个数字和 3 个字符串。很容易认为它包含 10 个数字和 1 个字符串,但由于使用空格作为分隔符并且字符 Iron - Alpha 未包含在引号中,因此它们构成了 3 个字符串,而不是 1 个.

接下来,如果您在格式规范中提供了对输入行的完整描述,textscan 只会按照您的意愿行事。比如下面的

 M = textscan(fid, '%f %f %f %f %f %f %f %f %f %f %s %s %s')

对我来说效果很好。由于您只需要前 5 列数据,而这会读取所有数据,因此您可以轻松删除不需要的列。

如果您想要或需要避免读取不需要的数据,您必须变得更聪明一些。您可以指示 textscan 忽略特定字段,如下所示:

 M = textscan(fid, '%f %f %f %f %f %*f %*f %*f %*f %*f %*s %*s %*s')

它只读取每行的前 5 个字段。该文档将为您指出进一步改进阅读习惯的方法。

关于matlab - 从大型文本文件中读取 Matlab 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com