这状况可能是这样的:
你的 OPEN(27,FILE=FNAME,status='old',FORM='UNFORMATTED')
忽略了存取方式(access)的指定,所以会以默认的循序(sequential)方式读/写资料。
而Fortran循序档在资料头尾各会有着一个描述资料长度的4-bytes整数,若我写入三个
双精度实数,那结构会是这样:24 双精度实数 双精度实数 双精度实数 24
它的总大小会是4+8+8+8+4,每次的read/write都会对应一组头尾的Header/Terminator,
所以若MATLAB在写出资料时不会自动加上这样的长度描述资料,那读取时就会出问题。
怎么判断?只要计算变量大小*数量与实际档案大小就知道有没有其他东西在里面了。
从你的回应来看,
我猜MATLAB应该是用串流(stream)的方式输出资料,所以指定binary就可以正常读取,
这用法等同于其他家编辑器的:
open(27,file=FNAME,status='old',form='unformatted',access='stream')
此外,若你的资料型别都很一致(比如说都是4-bytes的整数)
那也可以指定access='direct'与recl来做随机存取。