matlab读取每行中带问号的文件

时间:2013-12-04 06:06:44

标签: matlab

我有一个dat文件,每行包含?

e.g

1 ? 2008 3 31
2 ? 2013 2 01

如何将此文件读入matlab,然后将第二列更改为数值?

2 个答案:

答案 0 :(得分:2)

假设您的文件格式与您所呈现的一样,那么您可以执行以下操作:

% read data into C matrix,
% '?' will be read as number 63 in second column
fileID = fopen('data.txt');
C = fscanf(fileID, '%f %s %f %f %f', [5 inf])';
fclose(fileID);

C =

           1          63        2008           3          31
           2          63        2013           2           1

更改第二列的值,就像对普通矩阵一样。

答案 1 :(得分:2)

如果您不知道问号所在的位置,我建议您使用NaN替换所有问号。通过这种方式,它们可以作为数字读入,您仍然可以识别它们。

执行此操作后,您可以轻松地在文件中读取:

dlmread(`myData.dat`)

有几种方法可以用NaN替换问号,最简单的一次使用是用文本编辑器替换所有问题。