找回密码
 注册
Simdroid-非首页
查看: 95|回复: 0

[3. Fortran] 【求助】那里出了问题?

[复制链接]
发表于 2004-7-13 19:34:43 | 显示全部楼层 |阅读模式 来自 北京
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时怎么调用的,一便解决我的哪个相对复杂的问题,现在出现这个问题,我不知道是怎么回师了,请高手指点一二!!多谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 05:24 , Processed in 0.030658 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表