24小时热门版块排行榜    

查看: 586  |  回复: 0

aspenchen

至尊木虫 (初入文坛)

[求助] MATLAB调用Fortran代码mexfunction函数输出参数的个数是多个怎么搞?

#include "fintrf.h"
subroutine mexfunction(nlhs,plhs,nrhs,prhs)
   integer::nlhs,nrhs
   mwpointer::plhs(*),prhs(*)
   integer::mxgetm,mxgetn
   mwpointer::mxCreateDoubleMatrix,mxgetpr

   integer::m(2),n(2)
   real*8,allocatable::a(:,,b(:,,c(:,,d(:,

   m(1)=mxgetm(prhs(1))
   n(1)=mxgetn(prhs(1))
   m(2)=mxgetm(prhs(2))
   n(2)=mxgetn(prhs(2))

   allocate(a(m(1),n(1)),b(m(2),n(2)),c(m(1),n(2)))

   call mxCopyPtrToReal8(mxgetpr(prhs(1)),a,m(1)*n(1))
   call mxCopyPtrToReal8(mxgetpr(prhs(2)),b,m(2)*n(2))

   plhs(1)=mxCreateDoubleMatrix(m(1),n(2),0)
   plhs(2)=mxCreateDoubleMatrix(m(1),n(1),0)

   c=matmul(a,b)
   d=2.0*a

   call mxcopyreal8toptr(c,mxgetpr(plhs(1)),m(1)*n(2))
   call mxcopyreal8toptr(d,mxgetpr(plhs(2)),m(1)*n(1))
   return
end subroutine
====================================================
上面这个例子要输入两个矩阵,求两个矩阵的乘积和第一个*2,然后输出两个结果,也就是nlhs应该是2,但是MATLAB运行直接跳错,请问有没有知道哪里错了的
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 aspenchen 的主题更新
信息提示
请填处理意见