Fortran和Matlab混合编程简介
- 格式:ppt
- 大小:1.72 MB
- 文档页数:33
第15章MATLAB与其他编程语言结合第1 5章M A T L A B与其他编程语言结合M AT L A B可以和其他编程语言一起使用,可以调用 F O RT R A N或C程序。
反过来F O R T R A N或C也可以调用M A T L A B程序。
这样,快速的编译程序就可以利用M A T L A B中强大的矩阵或图形命令,通过编写部分的C或F O R T R A N程序,并进行编译,就可以避免M A L TA B 程序的瓶颈现象。
M A T L A B还可以结合使用其他的应用程序,如Microsoft Word for Wi n d o w s。
这将在本章的最后一节讨论,这主要取决于计算机的系统和安装的应用程序。
15.1 介绍M A T L A B和F O R T R A N或CM A T L A B可以被F O R T R A N或C语言程序调用,它也可以调用F O R T R A N或C语言程序。
如果M A T L A B程序运行速度很慢,后者对此很有用。
因为M A T L A B是一个解释性语言,所以当运行程序时就是解释它的命令。
这样有时会导致程序的运行速度很慢,如f o r- l o o p s循环。
在F O RTRAN 77和C中可以使用M AT L A B库,也可以用F O RTRAN 90或C++对它们进行链接。
除非特别需要,一般不推荐编写F O R T R A N或C程序。
M A T L A B的优点在于可以用高级的形式描述出操作,而程序员不必担心循环的次数和一些其他细节问题。
被M A T L A B调用的程序必须在编译后转换成M E X文件,这样才能被M A T L A B调用。
在编译时它们和M文件一样使用。
在2 .8节中讲到了由M A T L A B创建的二进制文件。
它们是以M A T文件形式被调用的,在C 或F O R T R A N语言的库中有用来读和写二进制文件的程序。
科学计算中如果需要同时用到fortran和matlab,通常为在MATLAB中调用Fortran。
由于compact fortran和powerstation等编译器在win环境下陆续无法兼容,目前一般使用visual studio(vs)加intel visual fortran(ivf)的组合编译环境。
网上讲解调用方法语焉不详,以下是我自己探索的方式。
1.版本选择64Win7环境下,可行的一种搭配是visual studio 2012+ivf2013xe+matlab2013a,似乎可以将vs和ivf同时降2年,matlab如使用matlab2012等可能需要修改环境路径,百度。
Win8环境中则不可以使用vs2010(我尚未成功过0_0)。
2.安装次序先安装vs,再安装ivf,建议最后安装matlab。
如果没有其他需求,vs可以不安装除c++之外的可选功能,matlab也可以自选。
3.调用过程a)首先,通过开始栏的ivf来打开matlab,即:开始,intel parallel studio xe2013,command prompt,parallel ……XE,打开窗口命令,输入matlabb)Matlab中输入mex –setup,注意有空格。
给出编译器选择Please choose yourcompiler for building external interface (MEX) files: Would you like mex to locateinstalled compilers [y]/n?选择n,然后可以自选配置,如Select a compiler:[1] Borland C++Builder version 6.0[2] Borland C++Builder version 5.0[3] Borland C++Builder version 4.0[4] Borland C++Builder version 3.0……这里输入数字,选择ivf2013(with visual C++ 2012 linker)c)弹出如下选择:Your machine has a Digital Visual Fortran compiler located atC:\Program Files\……. Do you want to use this compiler [y]/n?选择n自行找到位置,方法是打开开始,intel parallel studio xe 2013,intelcompiler xe,using VS2012,右键之,打开文件位置,复制即得到地址。
MATLAB与FORTRAN共享数据的实现
徐屾;于波
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2001(000)006
【摘要】MATLAB具有强大的矩阵计算和绘图功能,而FORTRAN在大规模的数值计算上仍占有一定的优势.使用MATLAB强大的矩阵计算与绘图功能,或借用FORTRAN大规模的数值计算能力,在应用程序的开发或数值计算、分析中,我们就可以节省大量的时间与精力.
【总页数】3页(P78-80)
【作者】徐屾;于波
【作者单位】武汉大学动力机械工程学院,武汉,430072;武汉大学动力机械工程学院,武汉,430072
【正文语种】中文
【中图分类】TP3
【相关文献】
1.MatLab与Fortran混合编程实现结构优化和可靠性分析 [J], 赵秀丽;易平
2.Fortran与Matlab混合编程实现溴化锂水溶液的物性计算可视化 [J], 王书中;由世俊;孙贺江;李秋生
3.VC++调用Fortran及MATLAB程序混合编程实现 [J], 马清华;王明海
4.Matlab与Fortran混合编程之DLL实现方法 [J], 潘克家;汤井田;郑洲顺
paq Visual Fortran与Matlab混合编程实现小波域地震信号多尺度分析[J], 徐天吉;程冰洁
因版权原因,仅展示原文概要,查看原文内容请购买。
MAT LAB与F ORT RAN接口技术枣庄学院数学与信息科学系 赵晓艾[摘 要]介绍了动态链接函数库M EX文件,MAT文件及MAT LAB引擎的调用原理,利用MAT LAB和F ORT RAN接口技术实现F ORTRAN程序计算结果的可视化过程。
[关键词]MAT LAB F ORTRAN AP I MAT LAB是一种面向科学与工程计算的高级语言,凭借其强大的科学计算与可视化功能,简单易用的开放式可扩展环境,取得了在矩阵代数、数值计算、数字信号处理、动态仿真﹑神经网络控制等领域的广泛应用。
:它语言简洁,使用方便灵活,程序书写形式自由,图形功能强大。
MAT LAB扩充能力强,交互性好,有丰富的库函数,它包含了大量的MAT LAB与C/F ORTRAN语言之间的接口函数,在进行复杂数学运算时可以直接调用,这些接口函数是MAT LAB的一个非常重要的组成部分。
虽然MAT LAB是一个完全独立的编程和数据运算的集成环境,使用它可以方便地完成许多工作,但是,很多时候仅靠MAT LAB环境还是不能很好的完成任务,例如:MAT LAB中程序循环,其它语言编写的算法的移植要重新编写M文件等。
F ORT RAN语言是传统的数值处理语言,处理速度高,编程简便,其强大的数值计算能力和长期积累的大量的科学计算程序库及工程应用软件,始终占据着科学和工程计算领域的重要地位,有很多源代码资源可供使用,但它在图形功能方面有较大的不足。
MAT LAB提供的AP I(App licati on Pr ogra m I nterface)弥补了彼此的不足,它支持MAT LAB与外部数据和程序的交互。
MAT LAB接口包括:在MAT LAB环境中调用其它语言编写的程序和算法,通过M EX文件实现;MAT LAB与其它编程环境的数据交互,通过MAT文件实现;其它编程环境使用MAT LAB的计算绘图功能,通过MAT LAB计算引擎实现。
Matlab混合编程(清华BBS)一.matlab与vc混编1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用:这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2)vc的设置请参看精华区x-6-1-4-3-5,通过这种设置可以调用c math library和c++math library,C++ mathlib的pdf在精华区x-6-1-10里2.通过matlab的combuilder将m文件做成com组件,供vc调用参看精华区x-6-1-53.通过matcom:这个mathworks公司已经不在出新版本了,而且他的功能可能用第1和第2种方法代替推荐使用前两种方式,matcom的使用精华区有一部分,从x-6-1-4下找二.matlab与vb混编1.mathworks公司专为vb开发了一个com组件:matrixvb,里面有大量的数学函数.这个组件需要另装,请在安装盘上或网上下载,注册码参看精华区x-6-1-3-8装好这个组件后,他自带了两个pdf文件,用法及其能用的函数全在上面,推荐阅读这两个pdf文件,精华区的位置是x-6-1-4-62.通过matlab的combuilder将m文件做成com组件,供vb调用参看精华区x-6-1-5三.matlab与.net混编在6.1版本以前一直没有这方面的讨论,用mcc编成dll或cpp,c文件应该可以,由于.net调用com组件很方便,推荐使用通过matlab的combuilder将m文件做成com组件,供 .net调用,参看精华区x-6-1-5四.试试通过matlab的combuilder做成com组件的方式实现混编,这也是mathworks公司推荐的方法,他不受语言和编译器的局限,相信高版本的matlab将在这方面有更大的改进这方面的介绍参看精华区x-6-1-5五.其他的语言或编译器与matlab混编精华区x-6-1-4里有一些相关的介绍,不全,还请用过的大侠总结这方面的内容。
fortran与matlab混合编程实现溴化锂水溶液的物性计算可视化以溴化锂水溶液为工质的吸收式制冷既可利用蒸气,热水,燃气、燃油等能源,还可利用工业余热、废热、太阳能、地热能等低品味能源作为动力,同时工质对大气臭氧层无破坏作用,这些节能、环保方面独特的优势使得溴化锂吸收式制冷具有了广阔的市场和良好的发展前景。
随着溴化锂吸收式制冷机组在技术与应用上的不断发展,人们对机组的优化设计、变工况条件下最佳运行参数的动态调整和自动控制等方面提出了更高的要求,也越来越多地要求利用计算机进行设计和计算。
传统的这类计算都要借助于溴化锂水溶液的物性数据图表,从图表上查出或手算出有关物性参数和热力过程特性数据。
但是这种方法繁琐,费时,误差较大,已经远远不能满足现在的应用需求,为此,能不能找到一种可以动态绘图,自动捕捉状态点,鼠标实时显示状态点参数,并根据已知的的状态参数求其他未知的参数,根据用户需要直接绘制溴化锂吸收式制冷循环流程图的方法,已成了急需解决的问题。
基于此,本文尝试从满足以上几种功能出发,利用FORTRAN与Matlab混合编程,充分结合Fortran运算速度快,Matlab矩阵计算及图形处理功能强的优点,实现了溴化锂水溶液物性计算的可视化。
1 溴化锂水溶液物性计算可视化的基本思想使用过Fortran、C和C++等传统的高级语言进行编程的读者可能都知道,在对矩阵,运算尤其是复杂的绘图操作时,程序设计将是一件非常困难,又不能很好的实现预想效果的任务,Matlab(又称Matrix Labrotary)就是Mathworks 公司推出的最初用于解决该问题的以矩阵(Matrix)和阵列(Array)为基本编程单元的,拥有完整的控制语句、数据结构、函数编写与调用格式和输入输出功能的具有面向对象程序设计特征的高级程序语言,其强大的科学计算与可视化功能,简单易用的开放式可扩展环境以及30 多个面向不同领域而扩展的工具箱(TOOLBOX)支持,包括了通信系统、信号处理、图象处理、小波分析、鲁棒控制、系统辨识、非线性控制、模糊控制、神经网络、优化理论、样条、商用统计分析等大量现代技术学科的内容,使得MATLAB 在许多科学领域中成为计算机辅助设计与分析、算法研究和应用开发的基本工具和首选平台。
万方数据万方数据万方数据万方数据万方数据MatLab与Fortran混合编程实现结构优化和可靠性分析作者:赵秀丽, 易平作者单位:大连理工大学建设工程学部,辽宁大连,116024刊名:水利与建筑工程学报英文刊名:Journal of Water Resources Architectural Engineering年,卷(期):2012,10(3)参考文献(18条)1.聂维中;卢林枫浅谈MATLAB在土木工程领域的应用[期刊论文]-建材世界 2009(05)2.施阳;李俊MatLab语言工具箱--TOOLBOX实用指南 19983.张建仁;许福友两种求解可靠指标的实用算法[期刊论文]-工程力学 2002(03)4.贡金鑫;仲伟秋;赵国藩结构可靠指标的通用计算方法[期刊论文]-计算力学学报 2003(01)5.易平概率结构优化设计的高效算法研究[学位论文] 20076.信任浅谈国际标准中结构可靠度设计新方法[期刊论文]-水利与建筑工程学报 2009(03)7.冯云芬;贡金鑫建筑结构基于可靠指标的设计方法[期刊论文]-工业建筑 2011(07)8.侯钢领;欧进萍结构可靠指标计算的优化模型及其在Matlab环境下的实现[期刊论文]-哈尔滨建筑大学学报 2001(01)9.张高峰;贾建勋;张大巍应用Matlab优化工具箱求解可靠度问题 2004(01)10.李志华;张光海;康海贵基于Matlab优化工具箱的工程结构可靠度计算[期刊论文]-四川建筑科学研究 2005(03)11.王勖成有限单元法 200312.朱伯芳有限单元法原理与应用 200913.李亚智;赵美英;万小朋有限元法基础与程序设计 200414.王世香精通MatLab接口与编程 200715.刘志俭MATLAB应用程序接口用户指南 200016.朱伯芳;黎展眉;张璧城结构优化设计原理与应用 198417.贡金鑫;魏巍巍;赵国藩工程结构可靠性设计原理 200718.许林基于可靠度的结构优化研究[学位论文] 2004本文链接:/Periodical_fsjs201203004.aspx。
matlabfastsim fortran_轮轨关系【实用版】目录1.MATLAB 简介2.MATLAB 中的 FastSim 函数3.Fortran 语言与 MATLAB 的交互4.轮轨关系的理解和应用5.结论正文一、MATLAB 简介MATLAB 是一种广泛应用于科学计算、数据分析、可视化和算法开发的编程语言。
它以其高效的矩阵计算和强大的函数库而闻名,使得用户可以快速地解决各种实际问题。
二、MATLAB 中的 FastSim 函数FastSim 函数是 MATLAB 中的一个用于模拟快速旋转的函数。
它可以用来模拟一个物体在旋转过程中的运动状态,包括物体的角速度、角加速度、速度和加速度等参数。
三、Fortran 语言与 MATLAB 的交互Fortran 语言是一种广泛应用于科学计算和工程领域的编程语言。
与MATLAB 不同,Fortran 语言是一种编译型语言,需要先编译成可执行文件后才能运行。
然而,MATLAB 和 Fortran 语言可以通过 MATLAB 的 Fortran 接口进行交互。
用户可以在 MATLAB 中调用 Fortran 语言编写的函数,也可以在 Fortran 语言中调用 MATLAB 的函数。
四、轮轨关系的理解和应用轮轨关系是指轮子和轨道之间的关系。
在机械传动系统中,轮子和轨道的相对位置和运动状态直接影响着系统的传动效率和稳定性。
在 MATLAB 中,用户可以使用 FastSim 函数来模拟轮轨关系的运动状态,并通过 MATLAB 和 Fortran 语言的交互来分析和优化轮轨关系的性能。
五、结论MATLAB 和 Fortran 语言在科学计算和工程领域中都有着广泛的应用。
混合编程之Matlab 调用Fortran1.测试平台Window 10 64位系统Matlab 2017a 64位Simply Fortran v2.42.Matlab 调用Fortran 之DLL实现2.1.生成DLL文件步骤1:在Simply Fortran v2.4上,新建一个Shared Library(DLL)项目,项目名随意。
步骤2:由于在64位的Matlab上调用DLL,因此我们须将项目的DLL文件也生成为64位,否则Matlab将会提示错误“不是有效的Win32应用程序” 。
注意Target Name的dll文件名须符合为Matlab变量命名法则。
另外,数值之间的传递须有相同的数值类型,否则将会运行出错。
这里先提一句,我们生成的DLL文件可被调用,一般按C调用约定,因此,Fortran的数值类型须与C的数值类型匹配。
在Fortran中常用的数据参数类型有:REAL:表示浮点数据类型,即小数,等价于C的float;INTEGER:表示整数类型,相当于C的int数据类型;DOUBLE PRECISION:表示双精度数据类型,相当于C的double数据类型。
在本例中,我们均采用double数据类型,为了方便,可如下设置:步骤3:书写DLL代码subroutine test(c,a,b)!输出变量必须位于输入变量之前,即c须位于a,b之前,否则在后续Matlab 调用中会错误(笔者认为仅与伪注释!DEC$ A TTRIBUTES REFERENCE有关)!DEC$ A TTRIBUTES C,DLLEXPORT::test!DEC$ A TTRIBUTES REFERENCE ::c !返回值,传地址!上一行伪注释语句说明的是test_f.dll文件中包含一个名为test的子例行程序,C即为按C调用约定输出real::a,b,cc=a+bend subroutine步骤4:生成DLL直接Build project,即可生成test_f.dll文件。
Matlab混合编程By FrozenseaV1.00, 2005-10-301.介绍Matlab6.5是最后一个提供c++ math library的版本,功能强大。
可以在VC中调用Matlab 的库函数进行编程并显示,得到EXE文件。
Matlab7中只剩下了最基本的结构定义,效率低下,使用不便。
以这种方式得到的程序在运行时需要相应的Matlab dll支持。
示例中的EXE目录已经附上所有基本功能所需要的dll了(Matlab lib files\DLLs\bin\win32下的所有文件)。
如果是使用了toolbox中的函数,请附上Matlab lib files\DLLs\toolbox\matlab目录下对应的文件。
在(7.1.3088)中使用Matlab的库函数时,Matlab需要VC6的一些库函数支持。
也就是说,仍然需要VC6的一些库函数,并在中添加相应的路径。
此外,Matlab中所有的库函数都放在了Matlab lib files目录中,所以不需要安装matlab6.5就可以使用。
只要设定对应的include, lib目录,就可以编译通过。
运行所需的dll可以通过mglinstaller.exe解开得到(见DLLs目录)。
库函数使用方法请查阅Matlab6 Userguides.2.基本设置通过进行如下设置,我们可以在Matlab中使用其数学库,如矩阵球逆,FFT等。
在VC6中设置如下:/**************************************************************************** MFC: Use MFC in a Shared DLLInclude Path:D:\Program Files\Matlab\extern\includeD:\Program Files\Matlab\extern\include\cppLibrary Path:D:\Program Files\Matlab\extern\lib\win32\D:\Program Files\Matlab\extern\lib\win32\microsoft\msvc60Executable Path:D:\progra~1\matlab\bin\win32建议在系统属性→高级→环境变量→系统变量→Path中添加1.Add following line at the end of stdafx.h#include <matlab.hpp>2.Add desired libraries at the end of stdafx.h#pragma comment(lib, "libmatpm.lib")#pragma comment(lib, "libmx.lib")#pragma comment(lib, "libmatlb.lib")#pragma comment(lib, "libmat.lib")#pragma comment(lib, "libmmfile.lib")#pragma comment(lib, "libmatpm.lib")3. Add preprocessors to project: Project->Settings->C/C++->Preprocessor definitions.MSVC,MSWIND,IBMPC,D__STDC_If not, compiler will report error when compiling matlab.hpp:c:\matlab\extern\include\cpp\matmtxif.h (16):fatal error C1083: Cannot open includefile strstream.h.No such file or directory.4. Change project settings to build a Multithread Dll in the Runtime LibraryProject→Settings→C/C++→Code Generation→Runtime Library→Multithread DllRebuild the project.If not, linker reports error when linking MATLAB library files:LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs;use /NODEFUALTLIB:library.\ex1.exe : fatal error LNK1169: one or more multiply defined symbols foundError executing link.exe*****************************************************************************/ 在中设置如下:/****************************************************************************** Using matlab6.5 c++ math library in *(VC7.1.3088) will need some libs in VC6MFC: Use MFC in a Shared DLLInclude Path:D:\Program Files\Matlab\extern\includeD:\Program Files\Matlab\extern\include\cppD:\Program Files\Microsoft Visual Studio\VC98\IncludeLibrary Path:D:\Program Files\Matlab\extern\lib\win32\D:\Program Files\Matlab\extern\lib\win32\microsoft\msvc60D:\Program Files\Microsoft Visual Studio\VC98\LibExecutable Path:D:\progra~1\matlab\bin\win32建议在系统属性→高级→环境变量→系统变量→Path中添加1.Add following line at the end of stdafx.h#include <matlab.hpp>2.Add desired libraries at the end of stdafx.h#pragma comment(lib, "libmatpm.lib")#pragma comment(lib, "libmx.lib")#pragma comment(lib, "libmatlb.lib")#pragma comment(lib, "libmat.lib")#pragma comment(lib, "libmmfile.lib")#pragma comment(lib, "libmatpm.lib")3. Add preprocessors to project: Project->Settings->C/C++->Preprocessor definitions.MSVC,MSWIND,IBMPC,D__STDC_If not, compiler will report error when compiling matlab.hpp:c:\matlab\extern\include\cpp\matmtxif.h (16):fatal error C1083: Cannot open includefile strstream.h.No such file or directory.4. Change project settings to build a Multithread Dll in the Runtime LibraryProject→Settings→C/C++→Code Generation→Runtime Library→Multithread DllRebuild the project.If not, linker reports error when linking MATLAB library files:LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs;use /NODEFUALTLIB:library.\ex1.exe : fatal error LNK1169: one or more multiply defined symbols foundError executing link.exe******************************************************************************/3.图形库设置在Matlab6.5的库函数中,我们不但可以使用数学库,也可以使用图形库,来进行plot 等操作。
FORTRAN, VC++,VB, DELPHI与MATLAB接口技术方法综述摘要:面向对象的可视化编程工具FORTRAN,VC++,VB, DELPHI使用广泛,而MATLAB计算机绘图功能强大,它们之间的接口技术使之进行相互融合,从而更好地体现各自的优越性。
关键词: MATLAB,VC++,VB,FORTRAN,DELPHI,接口技术,混合编程中图分类号:TP311 文献标识码:AThe Review of interfacing technol ogy between FORTRAN,VC++,VB,DELPHI and MATLABAbstract: FORTRAN is one of the most popular visual programming tools at present. The same as FORTRAN ,VC++,VB and DELPHI are other three Kinds of the most excellent programming languages, while MATLAB has powerful functions in calculating and drawing. The interfacing technology which combining MATLAB with FORTRAN ,VC++,VB and DELPHI, respectively bring out the best of their own advantagesKeywords :MATLAB,FORTRAN,VC++,VB,DELPHI,Interface technology,Mixed ProgrammingMATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。