aniso 发表于 2009-7-3 14:29

这样的文件如何读取-请指点

1 LYS   Pg    15:22:31.3   8.0   59.1          5.5         E 482.650.68   0.42
             Sg    15:22:39.3                                     N 313.420.62   0.46
             Ng    15:22:39.3                                     N 313.420.62   0.46
2 MZP   Pg    15:22:31.7   8.5   64.3                                       0.04
             Sg    15:22:40.2                                                   -0.05
             Sg    15:22:39.3                                     N 313.420.62   0.46
             Wg    15:22:39.3                                     N 313.420.62   0.46
             Sg    15:22:39.3                                     N 313.420.62   0.46
             Ng    15:22:39.3                                     N 313.420.62   0.46
3 CD2   Pg    15:22:31.8   9.0   64.7          4.8         E82.600.60   0.13
            Sg    15:22:40.7                                                      0.50
4 JJS   Pg    15:22:33.6         73.9          5.5         E 361.600.86   0.47
                                                               N 288.450.70
                                                               
前面的1,2,3,4分别代表4个事件,第一个事件占了3行,第二个事件占了6行,第三、第四个事件分别占了2行和1行
请问如何用MATLAB读入这个文件,并把每个事件所占的行数统计出来?

请高手指点,在此先谢过了!!

[ 本帖最后由 aniso 于 2009-7-3 16:54 编辑 ]

ChaChing 发表于 2009-7-3 18:09

建议传上txt档, 或说明清楚资料格式, 比较容易确定!

aniso 发表于 2009-7-6 11:11

已经将数据文件格式上传,请大家帮忙看一下

波波球 发表于 2009-7-6 12:04

可以试下
D = importdata('example.dat')

ChaChing 发表于 2009-7-6 20:41

fid=fopen('example.dat'); p_event=0; p_line=[]; ii=[];
while ~feof(fid)
    = fscanf(fid, '%c', 1);
   if ~isempty(str2num(A)), p_event=p_event+1; ii=1; p_line=;
   else ii=ii+1; p_line(end)=ii; end
   fgetl(fid);
end
fclose(fid);
p_event, p_line

aniso 发表于 2009-7-8 09:22

非常感谢chaching,原来经常用fscanf,fgetl,textread读一些格式比较简单的文件。格式一复杂就不知道怎么处理了。谢谢!
页: [1]
查看完整版本: 这样的文件如何读取-请指点