2017-07-06 4 views
1

誰でもFortranを使って.matを読む方法を教えてもらえますか? matlabから2d行列を処理するには、fortranを使用する必要があります。 は私が fortranでの.matの読み方

open(unit = 9006, file = 'zmatrix.mat',status = 'unknown', form = 'unformatted') 
do i=1,296 
    do j=1,278 
    read(9006,*) zmatrix(i,j) 
    end do 
end do 

を使用しますが、それは、Fortranランタイムエラーと言われている:未フォーマットのデータ転送のためのフォーマットが存在します。 提案に感謝!

+0

私はあなたの質問があると思いますMATLAB開発者の正式な回答:https://www.mathworks.com/help/matlab/read-and-write-matlab-mat-files-in-cc-and-fortran.html – King

答えて

0

この小さなプログラムは、ファイルが1つの2次元の変数が含まれています。名前はexecのライン、すなわち./a.out Jet0500上の最初の引数である(.MATファイルを読み込み

!compile with gfortran Read_mesh.f90 

Module Mat_Read 

    real, allocatable :: omega(:,:) 
contains 

    Subroutine Read_mesh 
    implicit none 
    integer :: unitno=10 
    integer :: kx,ncolumn,nrow 
    character (len=30) :: filename 
    call getarg(1,filename) 
    open(unit=unitno,file=filename,form="formatted",& 
     &status="old",action="read") 
    do kx=1,3     ! read by 3 lines 
     read(unitno,fmt="(A1)") 
    end do 
    read(unitno,fmt="(8x,i14)")nrow 
    read(unitno,fmt="(10x,i14)")ncolumn 
    allocate (omega(nrow,ncolumn)) 
    do kx=1,nrow 
     read(unitno,*) omega(kx,:) 
    end do 
    close(unitno) 
    End Subroutine Read_mesh 
End Module Mat_Read 

Program test_Read_mesh 
    use Mat_Read 
    call Read_mesh 
    print *,omega(1,1)  
End Program test_Read_mesh 
+0

ありがとう!コードを実行するとそれは致命的なエラーです:モジュールファイルを開くことができません... "終了モジュールMat_Read"の行?私はGNU Fortranを使用しています – brian

+0

プログラムは私のためにエラーなしでコンパイルします。拡張子f90のファイルですか?最初の行(モジュール..)がコピー中に破損しましたか?最後に、これはあなたのコンパイルの問題では、たとえば./Read_mesh filenameで実行する必要があります。ファイルは2d変数が1つの.matファイルです。 –

+0

「たとえば、ファイルが.matファイルの場合は./Read_meshファイル名で実行する必要がありますか?ファイル名を.matの名前に変更する必要があるのですか? – brian

関連する問題