如何在 MATLAB 中读取制表符分隔的文本文件,该文件主要包含数字,但有时在少数单元格中包含单词 MAX?

kri*_*mas 2 matlab tab-delimited-text readfile

我想使用 MATLAB 从制表符分隔的文本文件中读取一系列单元格。这个单元格范围应该是数字,但最近提供这些数字的软件在数字太大时用“MAX”一词代替了数字应在的位置。这意味着我现在查看的单元格范围包含一些表示 MAX 的字符串,其余的都是数值。

到目前为止,我一直在使用 dlmread 来读取这个范围的数值,并且运行良好。当存在 MAX 时,dlmread 不起作用。

这是我用来读取数据的代码:

data = dlmread(filename, '\t', 20, 5);
Run Code Online (Sandbox Code Playgroud)

这是错误:

Mismatch between file and format string.
Trouble reading number from file (row 152u, field 31u) ==> MAX
MAX MAX 552.397949  33.415199   7.425600    3.379600
6.6422090   \n
Run Code Online (Sandbox Code Playgroud)

有没有办法读取此文件而不将其转换为 .csv?我想读入该文件并将显示 MAX 的单元格更改为 1500 这样的数字。

H.M*_*ter 5

你可以试试textscan

C = textscan(fid, '%f', 'delimiter', '\t', 'treatAsEmpty', {'MAX'},'EmptyValue', 1500);
Run Code Online (Sandbox Code Playgroud)

这将返回一个 1 × N 元胞向量,其中 N 是文件中值的数量。要将其转换为矩阵,您可以使用reshape

C = reshape(cell2mat(C),[numOfRows numOfCols]);
Run Code Online (Sandbox Code Playgroud)