- 积分
- 1
- 注册时间
- 2004-6-27
- 仿真币
-
- 最后登录
- 1970-1-1
|
subroutine iv1(ioutput,voutput)
real*8 Voutput(100), Ioutput(100)
real w
w=10
do i=1,100
w=iv3(w)
voutput(i)=2*w !*iv3(w)
ioutput(i)=5*w !iv3(w)
end do
end subroutine iv1
function iv3(w)
real w
w=2*w
iv3=w
write (*,*) ('444444444444')
end
!C The gateway routine
subroutine mexFunction(nlhs, plhs, nrhs, prhs)
integer prhs(*),plhs(*)
integer mxCreateDoubleMatrix, mxGetPr
integer Voutput_pr, Ioutput_pr !,d_pr
integer nlhs, nrhs
integer mxGetM, mxGetN
integer mxIsNumeric
real*8 Voutput(100), Ioutput(100) !,d
!C Check for proper number of arguments.
if(nrhs .ne.0) then
call mexErrMsgTxt('No input required.')
elseif(nlhs .ne. 2) then
call mexErrMsgTxt('Two output required.')
endif
!if(mxIsNumeric(prhs(1)) .eq. 0) then
!call mexErrMsgTxt('Input must be a numeric array.')
!endif
!C Create matrix for the return argument.
plhs(1) = mxCreateDoubleMatrix(1,100, 0)
plhs(2) = mxCreateDoubleMatrix(1,100, 0)
d_pr=mxgetpr(prhs(1))
ioutput_pr = mxGetPr(plhs(1))
voutput_pr = mxGetPr(plhs(2))
!call mxcopyptrtoreal8(d_pr,d,1)
!C Call the computational subroutine.
call iv1(ioutput,voutput) !,d)
!C Load the data into y_pr, which is the output to MATLAB.
call mxCopyReal8ToPtr(ioutput, ioutput_pr,100)
call mxCopyReal8ToPtr(voutput, voutput_pr, 100)
return
end
我就想用matlab调用fortran的程序,我的fortran程序又有一个调用语句,运行起来就出现下面错误,matlab也随着关了。
我就是想试试matlat调用带子程序的fortran时怎么调用的,一便解决我的哪个相对复杂的问题,现在出现这个问题,我不知道是怎么回师了,请高手指点一二!!多谢了 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|