将fortran二进制文件读入matlab

时间:2017-06-27 22:26:01

标签: matlab binary fortran

在我的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);
但是,这只会创建一个我猜的1d数组,包括所有的头信息。

我希望Matlab读取标题值,但不要将它们包含在最终数组中。我打算将数组重新整形为3d数组,因为数据来自cfd模拟,其网格为256x512x390 = 51,180,80

Matlab代码给了我一个411,343,976的1d数组,这是不正确的。

因此我在努力学习如何阅读二进制文件。我需要一些指导如何编写Matlab脚本来读取二进制文件

1 个答案:

答案 0 :(得分:0)

您可以读取字节向量中的数据:

bytevec = fread(fid, inf, 'uint8');

然后你可以通过它们的索引来查看和手动排列元素,例如 - 单精度(浮点)数据:

vec = typecast(bytevec(i1:i2), 'single');

然后将其转换为默认的matlab double类型而不更改数据值:

vec = cast(vec, 'double');

最后,您可以将原始矢量重塑为3d矩阵:

M = reshape(vec, [d1, d2, d3]);