在 MATLAB 中导入带有注释的文本文件

Posted

技术标签:

【中文标题】在 MATLAB 中导入带有注释的文本文件【英文标题】:Importing text files with comments in MATLAB 【发布时间】:2010-12-26 12:08:32 【问题描述】:

从文本文件导入数据时,MATLAB 是否将任何字符或字符组合解释为 cmets?当它在一行的开头检测到它时,会知道所有的行都被忽略了吗?

我在一个文件中有一组点,如下所示: 正如你所看到的,他似乎不太了解他们。除了 // 我可以使用 MATLAB 知道它可以忽略之外还有什么?

谢谢!

【问题讨论】:

【参考方案1】:

你试过%,MATLAB 中的默认注释字符吗?

正如 Amro 指出的那样,如果您使用 importdata 这将起作用。

【讨论】:

【参考方案2】:

其实你的数据是不一致的,因为每行的列数必须相同。

1)

除此之外,使用 '%' 作为 cmets 将被 importdata 正确识别:

文件.dat

%12 31
12 32
32 22
%abc
13 33
31 33
%ldddd
77 7
66 6
%33 33
12 31
31 23

matlab

data = importdata('file.dat')

2)

否则使用 textscan 指定任意注释符号:

file2.dat

//12 31
12 32
32 22
//abc
13 33
31 33
//ldddd
77 7
66 6
//33 33
12 31
31 23

matlab

fid = fopen('file2.dat');
data = textscan(fid, '%f %f', 'CommentStyle','//', 'CollectOutput',true);
data = cell2mat(data);
fclose(fid);

【讨论】:

【参考方案3】:

如果使用textscan函数,可以将CommentStyle参数设置为//%。试试这样的:

fid = fopen('myfile.txt');
iRow = 1;
while (~feof(fid)) 
    myData(iRow,:) = textscan(fid,'%f %f\n','CommentStyle','//');
    iRow = iRow + 1;
end
fclose(fid);

如果每行有两个数字,这将起作用。我注意到在您的示例中,每行的数字数量有所不同。有些行只有一个数字。这代表您的数据吗?如果每行中的列数不一致,则必须以不同方式处理。

【讨论】:

我把它们放在每行 2 个数字上(因为它们总是如此),但仍然不起作用。 一次读取一行。我修改了我的响应以读取到文件的末尾。

以上是关于在 MATLAB 中导入带有注释的文本文件的主要内容,如果未能解决你的问题,请参考以下文章

使用批处理文件在 QlikView 中导入文本文件或压缩文件

关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本

请问:在sql 2005中导入文本文件时,怎么去掉双引号?

R语言使用read_table函数读取文本文件或者文本数据生成dataframe数据集从分隔文本文件中导入数据(Importing data from a delimited text file)

在SSIS中导入CSV:截断错误

请问:在sql 2005中导入文本文件时,怎么去掉双引号? 文本文件1.txt结构如下: "张一波","男","28" "李梅&q