声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1405|回复: 11

[编程技巧] 请教如何打开下面的文件,并读出?

[复制链接]
发表于 2007-1-25 18:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
0 +  47038.7   1.05  09:26:07  C
           2 +  46477.7   1.03  09:28:38  C  
           4 +  44865.7   1.04  09:28:48  C  
           6 +  41786.4   1.03  09:28:56  C  
           8 +  39896.0   0.97  09:29:03  C  
          10 +  37518.4   0.93  09:29:15  C  
          12 +  35858.5   0.92  09:29:30  C  
          14 +  46105.0   1.03  09:30:21  C  
          16 +  46168.6   6.89  09:30:30  C  
          18 +  48672.3   4.33  09:30:40  C  
          20 +  49565.7   0.49  09:30:48  C  
          22 +  49580.7   0.53  09:30:55  C  
          24 +  49602.3   0.84  09:31:03  C  
          26 +  49582.5   1.51  09:31:11  C  
          28 +  49577.0   1.39  09:31:19  C  
          30 +  49589.3   0.61  09:31:27  C  
          32 +  49578.3   1.06  09:31:29  C  
          34 +  49512.5   1.77  09:31:38  C  

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

                count =
                       0

         请问该如何,才能使用上述文件中的数据呢?
回复
分享到:

使用道具 举报

发表于 2007-1-25 19:00 | 显示全部楼层

回复

fscanf后一个参数要改一下,例如: fscanf(fid,'%g %g').
具体用法参见help,也可以搜索一下论坛.
发表于 2007-1-25 19:41 | 显示全部楼层
首先你要清楚你的文件是什么格式的,如果是ascii的格式,应该为fid=fopen('d:\shixi\dicia3.txt','r'); ‘rb’我记得是读二进制文件的。
 楼主| 发表于 2007-1-25 20:21 | 显示全部楼层
为什么我改成 fscanf(fid,'%g %g')结果仍旧不对?
>> [a,count]=fscanf(fid,'%g %g')

a =

     0


count =

     1
发表于 2007-1-25 20:55 | 显示全部楼层
用textread来读取吧,你的文件数据类型太多不同了

[ 本帖最后由 ChaChing 于 2009-5-16 18:13 编辑 ]
发表于 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

评分

1

查看全部评分

 楼主| 发表于 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两个月,所以请大家耐心指教。不胜感激。
发表于 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=[3,4],但是字符型的矩阵。一个字符8bit,只要在fread时跳过不要字符就可以了。你自己再看看help。
发表于 2007-1-25 21:51 | 显示全部楼层
[a,b,c,d,e,f]=textread(yourfilename,'%d %c %f %f %s %c');

c 存放的就是你要的数据

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

评分

1

查看全部评分

发表于 2007-1-25 21:51 | 显示全部楼层
估计你的存成二维的数组
 楼主| 发表于 2007-1-25 22:52 | 显示全部楼层
太感激楼上的几位了。
>> [a,b,c,d,e,f]=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

评分

1

查看全部评分

发表于 2011-9-12 18:35 | 显示全部楼层

fid = fopen(filename, permission, machineformat)
fopen的permission参数并无'b'
machineformat参数才有'b'
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-26 14:16 , Processed in 0.143413 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表