Read/Write Matlab files in fortran
- From: "Chris Hulbert" <cchgroupmail@xxxxxxxxx>
- Date: 28 Oct 2005 11:35:47 -0700
I'm starting to write a fortran 90 interface to a C library I wrote to
read/write matlab files. As I would like to make it publicly available
and I'm relativley new to fortran, I would like to get feedback on the
mannerisms in calling these functions. If it's not elegant or
irritating to use nobody would care to use it, so below is a test
program I write to read 3 datasets out of a matlab file. Suggestions
please?
PROGRAM test
USE MATIO
CHARACTER(len=4) :: prog_name
CHARACTER(len=8) :: filename
CHARACTER(len=3) :: i32name,i16name
CHARACTER(len=1) :: dname,sname
CHARACTER(LEN=2) :: i8name
INTEGER(KIND=4) :: mode, err, i,rank,
class_type,data_type
INTEGER(KIND=4),DIMENSION(50) :: i32
INTEGER(KIND=2),DIMENSION(50) :: i16
INTEGER(KIND=1),DIMENSION(50) :: i8
REAL(KIND=4), DIMENSION(50) :: s
REAL(KIND=8), DIMENSION(50) :: d
INTEGER(KIND=4),DIMENSION(2) :: dims
TYPE(mat_t) :: mat
TYPE(matvar_t) :: matvar
prog_name = 'test'
filename = 'test.mat'
i16name = 'i16'
i8name = 'i8'
i32name = 'i32'
dname = 'd'
sname = 's'
mode = MAT_ACC_RDONLY
dims = (/5,10/)
CALL FMAT_LOGINIT(prog_name)
err = FMAT_OPEN(filename,mode,mat)
IF ( err .EQ. 0 ) THEN
! Read Int32 data
err = FMAT_VARREADINFO(mat,i32name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i32)
PRINT *,i32
err = FMAT_VARFREE(matvar)
END IF
! Read Int16 data
err = FMAT_VARREADINFO(mat,i16name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i16)
PRINT *,i16
err = FMAT_VARFREE(matvar)
END IF
! Read Int8 data
err = FMAT_VARREADINFO(mat,i8name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i8)
PRINT *,i8
err = FMAT_VARFREE(matvar)
END IF
! Read double-precision data
err = FMAT_VARREADINFO(mat,dname,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,dims,d)
PRINT *,d
err = FMAT_VARFREE(matvar)
END IF
! Read single-precision data
err = FMAT_VARREADINFO(mat,sname,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,dims,s)
PRINT *,s
err = FMAT_VARFREE(matvar)
END IF
err = FMAT_CLOSE(mat)
END IF
END PROGRAM test
.
- Follow-Ups:
- Re: Read/Write Matlab files in fortran
- From: Mr Hrundi V Bakshi
- Re: Read/Write Matlab files in fortran
- From: Arjen Markus
- Re: Read/Write Matlab files in fortran
- Prev by Date: Re: Pi, random
- Next by Date: Re: Pi, random
- Previous by thread: Coupling Fortran Code with Simulink
- Next by thread: Re: Read/Write Matlab files in fortran
- Index(es):
Relevant Pages
|