【发布时间】:2017-12-01 03:12:47
【问题描述】:
在我的 fortran 代码中,我将结果输出到二进制文件中。
open(21,file=anum('press',itime),form=format_mode)
write(21) rtime,itime,dt,nx0,ny0,nz,deltax,deltay,rlenz
write(21) rw
close(21)
以上是写入和保存文件的fortran代码。
我现在想在 matlab 中打开并分析它:
fid = open('press.420000');
A = fread(fid);
close(fid);
然而,这只会创建一个一维数组,我猜它也包括所有标题信息。
我希望 Matlab 读取标头值,但不将它们包含到最终数组中。我打算将数组重塑为 3d 数组,因为数据来自 cfd 模拟,其网格为 256x512x390 = 51,180,80
Matlab 代码给了我一个 411,343,976 的一维数组,这是不正确的。
因此我正在努力如何读取二进制文件。我需要一些关于如何编写 Matlab 脚本来读取二进制文件的指导
【问题讨论】:
-
我建议更改 Fortran 以编写文本文件,并让 Matlab 读取文本文件。
-
如果matlab确实有二进制文件读取能力,那就是fortran流文件open(access='stream'...)
-
format_mode的值是多少?这是一个非常重要的信息。 -
format_mode必须是unformatted否则write会失败。我的建议是使用access=stream而不是哄着matlab 来读取神秘的fortran 默认顺序访问格式。另一个问题当然是两个程序中的变量类型必须相同。