⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timetwos.f90

📁 matlab与fortran 动态链接
💻 F90
字号:
         !!!!!计算一个数的倍数,将输入数据乘以2!!!
		 !!!!!第一部分:入口子程序
		 subroutine mexFunction(nlhs,plhs,nrhs,prhs)
         !参数定义:prhs,plhs 分别是指向输入输出数值的指针,其中(*) 指参数长度不确定
		 !nrhs,nlhs 分别是输入输出的数据个数
         integer plhs(*),prhs(*)
         integer mxGetPr,mxCreateFull
         integer x_pr,y_pr
         integer nlhs,nrhs
         integer mxGetM,mxGetN,mxIsNumeric
         integer m,n,size
         real*8  x,y
		 !检查输入输出数据的个数
         if (nrhs.ne.1) then
         call mexErrMsgTxt('one input must required')
         elseif (nlhs.ne.1) then
         call mexErrMsgTxt('one output must required') 
         endif
		 !获取输入数据的大小
         m=mxGetM(prhs(1))
         n=mxGetN(prhs(1))
         size=m*n
		 !检查数据的类型
         if(mxIsNumeric(prhs(1)).eq.0)then
         call mexErrMsgTxt('input must be a number')
         endif
		 !产生输出数组
         plhs(1)=mxCreateFull(m,n,0)
		 !获取输入参数的指针
         x_pr=mxGetPr(prhs(1))
		 !获取输出参数的指针
         y_pr=mxGetPr(plhs(1))
		 !将输入数据指针转换成双精度数据以调用子程序计算
         call mxCopyPtrToReal8(x_pr,x,size)
		 !调用现有的FORTRAN 子程序(这是我们编写这个接口程序的目的所在)
         call timestwo(y,x)
		 !将计算结果转换成指针返回到MATLAB
         call mxCopyReal8ToPtr(y,y_pr,size)
         return
		 end
		 !第二部分:计算用子程序(FORTRAN 中已有的子程序)
         subroutine timestwo(y,x)
         real*8 x,y
         y=2.0*x
         return
		 end
		 !将该文件保存成timestwo1f 放在MATLAB 当前工作目录下. 在MATLAB 命令窗口运行:
		 !mex timestwo.f    %编译程序
		 !x=2;
		 !y=timestwo(x)
         !y=4                  %输出结果

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -