尝试使用mex将数组从Fortran返回到Matlab,改为获取空数组

时间:2015-08-14 10:02:35

标签: matlab fortran mex

所以,我试图从1-n返回一个数组。

<div class="container" ng-controller="dashboardCtrl" ng-init="init()">


<h2>DASHBOARD</h2>
<ul>
    <li><a ui-sref="dashboard.me">Me</a></li>
    <li><a ui-sref="dashboard.messages">My Messages</a></li>
    <li><a ui-sref="dashboard.friends">My Friends</a></li>
</ul>

<div ui-view="dashboard_view"></div>

然后我在fortran中调用mex文件

#include "fintrf.h"

C     Gateway routine
      subroutine mexFunction(nlhs, plhs, nrhs, prhs)

C     Declarations
      implicit none

C     mexFunction arguments:
      mwPointer plhs(*), prhs(*)
      integer nlhs, nrhs


      mwPointer mxGetPr
      mwPointer mxCreateDoubleMatrix
      mwPointer mxGetM, mxGetN
      mwPointer mrows, ncols
      mwSize size
      mwPointer x_ptr, y_ptr
      integer  x_input,i
      real*8, allocatable :: vec(:)
      x_ptr = mxGetPr(prhs(1))
      mrows = mxGetM(prhs(1))
      ncols = mxGetN(prhs(1))
      size = mrows*ncols

      x_ptr=mxGetPr(prhs(1))
      call mxCopyPtrToReal8(x_ptr,x_input,size)

      allocate (vec(x_input))

      do i=1,x_input
        vec(i)=i
      end do

      plhs(1) = mxCreateDoubleMatrix(1, x_input, 0)


      y_ptr = mxGetPr(plhs(1))
      call mxCopyReal8ToPtr(vec,y_ptr,x_input)



      deallocate ( vec )
      return
      end

然后找

mex testingvec.F
Building with 'gfortran'.
MEX completed successfully.
a=testingvec(10);

有人可以给我一些帮助吗?如果有人能给我一些示例代码如何返回矩阵,那将是很好的。

谢谢你们。

编辑:新的代码安装。仍在努力寻求帮助。

a=[]

0 个答案:

没有答案