2013-05-10 91 views
-3

我想隱藏fortran到matlab。Fortran to matlab'未定義的函數錯誤'

-fortran代碼

DO 20 I=1,3 
    DO 20 J=1,4 
20 WORMX(I,J)=0.0 

    DO 24 INODE=1,8 
    IPOIN=IABS(LNODS(IELEM,INODE0) 
    DO 24 K=1,3 
    GTOP=COORD(IPOIN,K) 
    GBOT=COORD(IPOIN,K+4) 
    GOSH=((1.0+ZETA)*GTOP+(1.0-ZETA)*GBOT)/2.0 
    DO 22 J=1:3 
22 WORMX(K,J)=WORMX(K,J)+GOSH*SHAPE(J,INODE) 
24 WORMX(K,4)=WORMX(K,4)=WORMX(K,4)+SHAPE(1,INODE)*GTOP-BBOT)/2.0 

    CALL MATM(2,5,0,1) 

。 。 。 -matlab代碼

function FUNC 

global LNODS COORDI SHAPE NELEM DZETTA 

for I=1:3 
    for J=1:4 
     WORMX=zeros(I,J); 
    end 
end 

SHAPE=zeros(3,9); 
for INODE=1:8 
    for IELEM=1:NELEM 
     IPOIN=abs(LNODS(IELEM,INODE)); 
     for K=1:3 
      GTOP=COORDI(IPOIN,K); 
      GBOT=COORDI(IPOIN,K+4); 
      GOSH=((1.0+0.91)*GTOP+(1.0-0.91)*GBOT)/2.0; 
      for J=1:3 
      WORMX(K,J)=WORMX(K,J)+GOSH*SHAPE(J,INODE); 
      end 
      WORMX(K,4)=WORMX(K,4)+SHAPE(1,INODE)*(GTOP-GBOT)/2.0; 

     end 
    end 
end 

MATM(2, 5, 0, 1) 

。 。

我在MATLAB代碼中的錯誤消息,

"Undefined function or method 'MATM' for input arguments of type 'double'." 

是什麼在此代碼的問題?

+0

重複http://stackoverflow.com/questions/16477528/undefiend-function-or-variable?您的代碼中沒有定義MATM,或者您沒有向我們顯示它的位置。 – am304 2013-05-10 09:05:09

回答

0

您的FORTRAN代碼調用過程MATM。如果您的FORTRAN代碼沒有錯誤,那麼推測該過程是在某處定義的。

您是否已將程序MATM轉換爲MATLAB?如果沒有,那麼這就是問題所在 - 當MATLAB進入MATM(2, 5, 0, 1)這一點時會失敗,因爲沒有定義函數MATM

如果您已經將MATM翻譯爲MATLAB,那麼問題可能是MATLAB無法找到您的函數MATM。也許你需要將MATM的位置添加到你的MATLAB路徑中。