Fortran到matlab'未定义的函数错误'

时间:2013-05-10 08:24:30

标签: matlab fortran converter

我想将fortran转换为matlab。

-fortran code

   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'."

此代码中的问题是什么?

2 个答案:

答案 0 :(得分:0)

您的FORTRAN代码调用过程MATM。如果您的FORTRAN代码没有错误,那么可能是在某处定义了该过程。

您是否已将程序MATM翻译成MATLAB?如果没有,那就是问题 - 当MATLAB到达MATM(2, 5, 0, 1)点时它失败了,因为函数MATM没有定义。

如果您已将MATM翻译成MATLAB,那么问题可能是MATLAB找不到您的函数MATM。也许您需要将MATM的位置添加到MATLAB路径中。

答案 1 :(得分:0)

我认为没有找到MATM,因为它是在另一个函数m-file中定义的。

查看问题并接受Is it possible to define more than one function per file in MATLAB, and access them from outside that file?的答案。