簡體   English   中英

將fortran二進制文件讀入matlab

[英]reading a fortran binary file into matlab

在我的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,這是不正確的。

因此,我在努力讀取二進制文件。 我需要一些有關如何編寫Matlab腳本以讀取二進制文件的指南

您可以按字節向量讀取數據:

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

然后,您可以查看元素並通過它們的索引對其進行手動排列,例如-單精度(浮點)數據:

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

然后將其轉換為默認的matlab double類型,而不更改數據值:

vec = cast(vec, 'double');

最后,您可以將原始向量重塑為3d矩陣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM