爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5905|回复: 5

[求助] Matlab读取Fortran生成的二进制数据

[复制链接]

新浪微博达人勋

发表于 2019-12-9 15:24:37 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
小弟最近用Fortran写了一段生成二进制数据的程序,生成1-100的数组,代码如下:

program main
    real::x(100)

    do i=1,100
      x(i) = i
    enddo

    open(10, file='h.dat',form='unformatted')
    write(10) x
end

然后把生成的h.dat放入matlab进行处理,matlab处理的代码如下:

file_id = fopen('h.dat', 'r');
h0= fread(file_id,'float32');

结果输出来的结果是102个数据,在数组的头和尾多出了两个量级为10^-43次方的数据,如下图所示,请问各位,这是什么原因?小弟在此谢过了!

1575875799(1).jpg 1575875855(1).jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-12-9 16:18:04 | 显示全部楼层
二进制form为啥不用binary
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-12-9 16:37:41 | 显示全部楼层
苏拉苏拉 发表于 2019-12-9 16:18
二进制form为啥不用binary

感谢您的回复,两种格式我都采用了,出来一样的结果。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-9 16:49:32 | 显示全部楼层
Fortran文件读写

参考上面的视频连接,Fortran读写二进制文件,在记录前后各增加4字节,表示记录长度。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-9 16:54:37 | 显示全部楼层
open(10, file='h.dat',form='unformatted',status='replace',  &
                action='write',access='direct',recl=100*4)
    WRITE(10,rec=1) x
    close(10)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-12-10 14:26:42 | 显示全部楼层
安达充 发表于 2019-12-9 16:54
open(10, file='h.dat',form='unformatted',status='replace',  &
                action='write',access ...

感谢您的回复,确实是这样的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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