|
On 2/13/2013 9:54 AM, Jim wrote:
> I would like to write a Matlab script to read an N-dimensioned matrix
> created in Fortran. Specifically, the Fortran code wrote to a binary
> file using the following:
>
> write(30) a, b, c
> with the following declarations for a,b,c
>
> real a(16,20,22,6,3, 2)
>
> real b(16,20,22,6,3,13)
>
> real c(16,20,22,6,3,13)
>
> In Matlab, it seems that fread handles only a vector or 2-dimesional matrix
> fread(fileID, sizeA) where sizeA is a vector of size n or 2-dimensional
> matrix [m,n].
>
> How can I read the N-dimensioned matrix I described?
Need more info...did the Fortran program write a Fortran unformatted
file as a default OPEN(lun,form='unformatted')? If so, there's a record
structure that will have to be dealt with (Fortran unformatted files are
_NOT_ C-like stream files but have internal record information to
support operations like BACKSPACE). You'll have to read that
information as well.
If, otoh, either a pre-F2003 extension was used (supported by every
compiler I'm aware of in one form or another) or the F2003+ Standard
mechanism has been implemented in the compiler and used, then all you
need to do is to read the file and reshape since both Fortran and Matlab
use column-major storage order.
--
|