Formatting fread binary file (converting from FORTRAN script)
4 次查看(过去 30 天)
显示 更早的评论
I am converting some Fortran to MATLAB and am stuck early on when trying to load a binary file. I know MATLAB well but I have not had much experience loading binary files. I have mostly had to only load text files in the past. Furthermore, I am a newbie to Fortran and the I/O commands and generally lower-level language is a challenge.
The Fortran script has a read statement:
READ(Ifile,FMT='(A70)',ERR=993) Tag
My understanding is that this command has a file id (Ifile) similar to "fid" which has been called using a previous OPEN command (similar to fopen).
Furthermore, the '(A70)' specifies that the read command should read 70 bytes of the file as a character (A).
The result is stored in the variable "Tag".
However, in MATLAB, if I use
Tag = fread(fid,70,'char')
I don't get the same result as Fortran.
What am I missing here? Any help is appreciated.
3 个评论
James Tursa
2020-7-16
编辑:James Tursa
2020-7-16
You might have to skip 4 bytes first, and use '*char' formatting (with the asterisk) to get a char result. E.g., you might have to use some variation of these lines:
fread(fid,[1 4],'*uint8');
Tag = fread(fid,[1 70],'*char',4);
dpb
2020-7-16
Specifically, the file could be SEQUENTIAL or DIRECT. If it is direct access, then there will be as James notes a record marker at beginning (and perhaps end) of each record that will have to skip; a sequential file will have only record terminators and can be variable length; direct access is fixed-length.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fortran with MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!