在我的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脚本来读取二进制文件
答案 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]);