我有一个dat
文件,每行包含?
。
e.g
1 ? 2008 3 31
2 ? 2013 2 01
如何将此文件读入matlab,然后将第二列更改为数值?
答案 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
替换问号,最简单的一次使用是用文本编辑器替换所有问题。