Hello,
I have a binary data generated by Fortran, I am able to read my data:
fid = fopen('inflow.data0000');
sep1=fread(fid,1,'float');
nynzitime=fread(fid,3,'int32');
sep=fread(fid,1,'int32');
RAW_read = fread(fid, 3*n1*n2,'float32');
RAW = reshape(RAW_read, [n1,n2,3]);
fclose(fid);
I need to make some changes in the data and then write it out as a binary file for Fortran.
so I did this:
fileID = fopen('newinflow.data0000')
fwrite(fileID,sep1,'single');
fwrite(fileID,nynzitime,'int32');
fwrite(fileID,sep,'int32');
fwrite(fileID,RAW_read,'float32');
fclose(fileID);
then when Fortran reads the data:
namel='newinflow.data0000'
open(30,file=namel,form='unformatted')
read(30)n2al,n3l
read(30)qal(0:n2al+1,1:n3l,1:3)
close(30)
error message shows "corrupted file". I realized that it is a header/format related issue, but I am not familar with binary file, tried a few different things, no luck yet.
I attached a 'good' binary data, please see if you know how to read and write it properly for Fortran.
Thank you for your time.

답변 (2개)

James Tursa
James Tursa 2019년 9월 13일

0 개 추천

Can you read and write as “STREAM” in your FORTRAN compiler? No header stuff to worry about.
Image Analyst
Image Analyst 2019년 9월 13일

0 개 추천

Maybe try changing the ENDIAN?

댓글 수: 4

Haoliang Yu
Haoliang Yu 2019년 9월 13일
I tried, no luck. I think the problem is the first 4 bytes, I am not sure how to read it properly, for matlab, it doesn't matter what it is, so I couldn't write it back correctly.
Image Analyst
Image Analyst 2019년 9월 13일
Why are you not specifying 'w' or 'r' in your fopen()? Does it somehow figure it out afterwards?
Haoliang Yu
Haoliang Yu 2019년 9월 13일
Oh, I did, but forgot that part when I paste the code here...also I worked around this problem by changing the Fortran write and read code to STREAM.
Image Analyst
Image Analyst 2019년 9월 14일
A paste operation shouldn't drop out characters that were copied into the clipboard. You might want to investigate that.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Fortran with MATLAB에 대해 자세히 알아보기

질문:

2019년 9월 13일

댓글:

2019년 9월 14일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by