2

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

到目前为止,我一直在使用 dlmread 来读取这个数值范围,并且它工作正常。当有 MAX 时, dlmread 不起作用。

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

data = dlmread(filename, '\t', 20, 5);

这是错误:

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

有什么方法可以在不将其转换为 .csv 的情况下读取此文件?我想读入文件并将显示 MAX 的单元格更改为 1500 之类的数字。

4

3 回答 3

5

你可以试试textscan

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

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

C = reshape(cell2mat(C),[numOfRows numOfCols]);
于 2013-03-04T20:21:06.500 回答
2

http://www.mathworks.se/help/stats/tblread.html看起来是一个很好的函数,用法很简单:

数据=tblread('data.tsv','\t')

于 2013-08-23T13:42:48.227 回答
0

最简单的方法可能是简单地预处理文件,对“MAX”进行搜索和替换,用“inf”或您选择的数字(即1500)交换它。

于 2013-03-04T19:24:22.763 回答