[英]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.