heaventian 发表于 2007-1-25 18:14

请教如何打开下面的文件,并读出?

0 +47038.7   1.0509:26:07C
         2 +46477.7   1.0309:28:38C
         4 +44865.7   1.0409:28:48C
         6 +41786.4   1.0309:28:56C
         8 +39896.0   0.9709:29:03C
          10 +37518.4   0.9309:29:15C
          12 +35858.5   0.9209:29:30C
          14 +46105.0   1.0309:30:21C
          16 +46168.6   6.8909:30:30C
          18 +48672.3   4.3309:30:40C
          20 +49565.7   0.4909:30:48C
          22 +49580.7   0.5309:30:55C
          24 +49602.3   0.8409:31:03C
          26 +49582.5   1.5109:31:11C
          28 +49577.0   1.3909:31:19C
          30 +49589.3   0.6109:31:27C
          32 +49578.3   1.0609:31:29C
          34 +49512.5   1.7709:31:38C

上面是我们的实习数据,请教各位高手,如何用MATLAB打开含有上述数据的文件?并且将它读出?
我用fid=fopen('d:\shixi\dicia3.txt','rb');打开上述数据时,fid=3,说明应该是成功的,但是用=fscanf(fid,'c')读出时,结果却如下:
                   a =
                     ''

                count =
                     0

         请问该如何,才能使用上述文件中的数据呢?

xjzuo 发表于 2007-1-25 19:00

回复

fscanf后一个参数要改一下,例如: fscanf(fid,'%g %g').
具体用法参见help,也可以搜索一下论坛.

liujia1067 发表于 2007-1-25 19:41

首先你要清楚你的文件是什么格式的,如果是ascii的格式,应该为fid=fopen('d:\shixi\dicia3.txt','r'); ‘rb’我记得是读二进制文件的。

heaventian 发表于 2007-1-25 20:21

为什么我改成 fscanf(fid,'%g %g')结果仍旧不对?
>> =fscanf(fid,'%g %g')

a =

   0


count =

   1

eight 发表于 2007-1-25 20:55

用textread来读取吧,你的文件数据类型太多不同了

[ 本帖最后由 ChaChing 于 2009-5-16 18:13 编辑 ]

liujia1067 发表于 2007-1-25 21:19

读出来没有啊
我试了一下:
文件a.txt 写入以下内容
1+2 3 4:5 C
1+2 3 4:5 C


>> fid=fopen('a.txt','r')
>> aa=fread(fid,30,'uint8=>char');aa=aa.'
aa =

1+2 3 4:5 C

1+2 3 4:5 C

heaventian 发表于 2007-1-25 21:32

根据楼上的
>> fid=fopen('a.txt','r')
>> aa=fread(fid,30,'uint8=>char');aa=aa.'
aa =

1+2 3 4:5 C

1+2 3 4:5 C
我已经读出了文档中的内容。但是请问如何才能从aa中取出数组中的第三列元素呢?即
46477.7
44865.7
……

我刚学MATLAB两个月,所以请大家耐心指教。不胜感激。

liujia1067 发表于 2007-1-25 21:50

还是我的那文件
>>fid=fopen('a.txt','r');del=fread(fid,6,'uint8=>char');aa(1)=fread(fid,1,'uint8=>char');aa(2)=fread(fid,1,'uint8=>char');
则aa=,但是字符型的矩阵。一个字符8bit,只要在fread时跳过不要字符就可以了。你自己再看看help。

eight 发表于 2007-1-25 21:51

=textread(yourfilename,'%d %c %f %f %s %c');

c 存放的就是你要的数据

[ 本帖最后由 ChaChing 于 2009-5-16 18:15 编辑 ]

liujia1067 发表于 2007-1-25 21:51

估计你的存成二维的数组

heaventian 发表于 2007-1-25 22:52

太感激楼上的几位了。
>> =textread('d:\shixi\dicia3.txt','%d %c %f %f %s %c');
>> c

c =

1.0e+004 *

    4.7039
    4.6478
    4.4866
    4.1786
    3.9896
    3.7518
    3.5859
    4.6105
    4.6169
    4.8672
    4.9566
    4.9581
    4.9602

ChaChing 发表于 2011-9-12 18:35

liujia1067 发表于 2007-1-25 19:41 static/image/common/back.gif
首先你要清楚你的文件是什么格式的,如果是ascii的格式,应该为fid=fopen('d:\shixi\dicia3.txt','r'); ‘r ...

fid = fopen(filename, permission, machineformat)
fopen的permission参数并无'b'
machineformat参数才有'b'
页: [1]
查看完整版本: 请教如何打开下面的文件,并读出?