找回密码
 注册
Simdroid-非首页
查看: 84|回复: 2

matlab能否不按顺序读取二进制文件中的记录?

[复制链接]
发表于 2013-5-22 10:38:04 | 显示全部楼层 |阅读模式 来自 辽宁大连
http://wenku.baidu.com/view/65936fea998fcc22bcd10db4.html

请问如何利用matlab实现链接文件中Read( 12 , Rec = 2 ) 的功能?

点评

这个基本的功能,一般的语言都支持的  发表于 2013-5-22 13:56
发表于 2013-5-22 12:30:27 | 显示全部楼层 来自 北京
Simdroid开发平台
本帖最后由 liuyalong008 于 2013-5-22 12:37 编辑

调用matlab的fread和fseek函数就可以搞定
给你一个case,其中fseek就是用来确定你从
什么位置开始读取数字,要清楚double
float unit8各自所占用的字节数
  1. fid=fopen('test','w')
  2. fwrite(fid,rand(4),'double');
  3. fclose(fid);

  4. fid0=fopen('test','r')
  5. data=fread(fid0,[4,4],'double')
  6. fclose(fid0)

  7. fid1=fopen('test','r')
  8. fseek(fid1, 8, 'bof');
  9. A = fread(fid1, 5, 'double')
  10. fclose(fid1);
复制代码
其中8就是表示从第9个byte开始读取,此时fid1已经指向第九了
fread就直接从第九开始读取,读取double类型的5个数
  1. data=
  2.          0.832713897982154        0.341981401461809         0.394195318994379         0.559755843063273
  3.          0.562261658297558        0.433706581317408         0.870390820007112        0.492529883880463
  4.         0.4680652710035             0.480135218526002        0.701343659122503         0.0299508795889156
  5.         0.274707648920917         0.800933783757107         0.120414388112578        0.82112118736582

  6. >> A

  7. A =

  8.          0.562261658297558
  9.          0.4680652710035
  10.          0.274707648920917
  11.          0.341981401461809
  12.          0.433706581317408
复制代码

评分

2

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-5-22 13:52:58 | 显示全部楼层 来自 辽宁大连
楼上的哥们,谢了
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-30 08:29 , Processed in 0.062345 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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