MATLAB与FORTRAN接口技术
- 格式:pdf
- 大小:291.03 KB
- 文档页数:2
Matlab与其他语言和软件的接口问题>******************************************************************** ****<=================================== - [返回]1).如何在Matlab中读取Excel的xls数据文件?:#FangQ(Qianqian.Fang@), 2002/6/22. BigGreen/MathTools#使用xlsread()函数,或者使用excel的ActiveX接口来进行更复杂的操作,参见:/support/solutions/data/25179.shtml=================================== - [返回]2).如何在Excel中嵌入Matlab?:#FangQ(Qianqian.Fang@), 2002/6/22.BigGreen/MathTools#如果你的Matlab安装有ExcelLink,它可以实现Excel与Matlab直接的数据交换,可以在Excel中直接调用matlab的函数,进行绘图或者数据处理。
不过如果没有安装ExcelLink,你仍然可以使用Matlab的ActiveX接口来调用matlab,下面是一个Excel宏函数,作为例子:#BrettShoelson(bshoelson@),2001/11/01,comp.soft-sys.matlab#Sub CallMatlab()' Dimension variablesDim MatLab As ObjectDim ResultDim Invals(3, 4) As DoubleDim MImag() As DoubleDim i, j As Integer' Invoke MatlabSet MatLab = CreateObject("Matlab.Application")' Read Invals from current spreadsheet' (Assume Invals stored in B3:E5)For i = 0 To 2For j = 0 To 3Invals(i, j) = ActiveSheet.Range(Cells(i+3,j+2),Cells(i+3,j+2)).ValueNext jNext i' Send Invals to MatlabCall MatLab.PutFullMatrix("a", "base", Invals, MImag)' Send instructions to MatlabResult = MatLab.Execute("b=a.^2;")' Retrieve ResultCall MatLab.GetFullMatrix("b", "base", Invals, MImag)' Store Result in B8:E10ActiveSheet.Range("B8:E10").Value = InvalsEnd Sub=================================== - [返回]3).mcc,mex,mbuild都是作什么用的?:#FangQ(Qianqian.Fang@), 2002/6/22.BigGreen/MathTools#这个问题我一直都不是很清楚,看过compiler的PDF帮助之后,知道个大概,也不知道说得对不对:mcc(生成c/cpp文件)-----m--mex------ mex/dll|---x--mbuild-----C/C++ compiler----独立执行的程序mex文件是一种编译后的动态连接文件,需要在matlab中执行,优点是执行速度比m文件快,而且如果你不想提供m文件源码,可以使用编译后的mex/dll文件。
matlab 代替fortran goto语句
摘要:
1.引言
2.Matlab简介
3.Fortran中的goto语句
4.Matlab中替代goto语句的方法
5.总结
正文:
1.引言
Matlab是一种广泛应用于科学计算和数据分析的编程语言。
在某些场景下,Matlab可以替代Fortran语言,包括一些特定功能,如矩阵操作和图形绘制。
本文将探讨如何使用Matlab替代Fortran中的goto语句。
2.Matlab简介
Matlab是一种强大的数学软件,它具有丰富的函数库和良好的图形界面。
它支持多种编程结构,包括循环结构(如for循环和while循环)和条件结构(如if-else语句)。
3.Fortran中的goto语句
在Fortran中,goto语句是一种跳转指令,用于实现复杂的控制结构。
然而,过多的使用goto语句可能导致代码的可读性降低,甚至出现无限循环等问题。
4.Matlab中替代goto语句的方法
在Matlab中,可以通过以下方法替代goto语句:
a.使用条件结构(如if-else语句)来实现多路分支。
b.使用switch-case语句进行多路分支。
c.使用循环结构(如for循环和while循环)来实现复杂的控制逻辑。
d.使用Matlab的内置函数(如isequal、isless等)进行条件判断。
5.总结
总之,虽然Matlab可以替代Fortran中的goto语句,但在实际应用中,应尽量避免过多使用跳转语句,以提高代码的可读性和可维护性。
Matlab7.0.4 接口连接说明。
PSCAD使用的4.2.1教育版,网络版。
对于大小写的要求,对于系统的变量需要正常的大小写。
用户自定义的不需要注意。
切记:每个有MA TLAB的工程都需要设置一下链接,那个勾一定要勾上啊,害了我几天。
否则会报错的。
如下:不勾就会报错:下面的两个设置是一次设置就可以保存的。
1.设置fortran编译器,不能使用GUN编译器,因为它只能用在fortran77中,我用的下面的版本。
VF6.6专业版。
在PSCAD中如下设置:2.设置MA TLAB,对于7.0.4已经可以正常运行。
3.PSCAD系统设置完成后,就可以建case了,开始加模块了。
下面是我做的一个简单测试模块。
单输入单输出。
已成功运行。
testmat1.m :文件如下:function [I1]=testIO(in1)I1=in1;模块的制作如下:首先建立一个模块,这个就自己建了。
上面的三个参数是可以自己改的,第一个参数是m函数的文件名。
第二个参数是相对路径,即m函数所在的文件夹名,建议仿系统示例目录形式。
第三个参数是不一定需要的。
前面两个参数主要是用于调用m函数,表示路径和文件名。
下面是编写的脚本文件,是在DSDYN中。
#STORAGE REAL:2#LOCAL INTEGER I_CNTSTORF(NSTORF) = $INPUTCALL MLAB_INT("%:Dir\$Path", "$Name", "R" , "R")$OUTPUT = STORF(NSTORF+1)NSTORF = NSTORF + 2联合数组多输入多输出:首先建立一个INPUT,一个OUTPUT,可以是多维的,下面是一个2维输入输出。
注意,这里只有一个变量,使用数组表示,此数组下标是从1开始的。
在m文件中也是使用数组。
在main中使用数据组合和分离器。
mat I ab-CAL-FENGHAI-(2020YEAR-YICAI)」INGBIAN1,在mat lab 命令窗「1输入 mex - setup :Vould you like mex to locate ins tailed compilers [y]/n? 选择n [0] None 选择8Use C:\Program Files (x86)\Intel\CojfLposerXE-2011 anyway [y]/n?选择nPlease enter the location of your compiler: [C:\Program Files (x86)\Intel\ComposerXE-2011] 输入正确的路径:"C:\Program F 订es (x86) \Intel\Composer XE 2013"(按 住shift 再邮件赋值路径) Are these correct [y]/n?选择yTrying to update options file: C:\(Jser3\hu\AppData\Roaning NathWorks\MAlLAB\R2012b\mexopts ・batFrom tempi at e:C:\PROGRA~1 \MATLAB\XATLAB "1 'R2D12b\bin\vin64\mexopt sXintelf12nsvs2010opts. batDone ・・・ 成功2>将编写好的fortran 程序放在当前mat lab I 作目录下,如,在mat lab 命 令窗口输入:mex ,会在当前目录下生成相应的.mexw64文件B fw.f90一 fw.mexw643,调用函数:x=rand(10, 1) ;y=fw(x) Select a compiler:C++[1] ⑵ [3] ⑷ [5] ⑹ [7] [8] ⑼ [10] [11] [12] [13] [14] Intel Intel Intel Intel IntelIntel Intel Intel C++ C++ C++ 12.0 12.0 12. 0 11. 1 Visual Visual Visual Visual Visual (with Microsoft (with Microsoft(with Microsoft(with MicrosoftFortran Fortran FortranFortran Fortran Software Developjnent Kit (SDK) linker) Visual C++ 2008 SP1 Ixnlcer) Visual C++ 2010 linker) Visual C 卄 2008 SP1 Linger) 12 (with Microsoft Soft 谚企丫己 (with Microsoft (with Microsoft (with Microsoft (with Microsoft 12.0 12.0 Visual Visual Visual Development Kit (SDK) linker) C++ 2008 C++ 200S 2010 SP1 linker)Shell linker) linker) SP1 linker) Intel Intel Visual Fortran 11.1 (vith Microsoft Visual C++ 2008 Shell linker) Software Development Kit (SDK) 7. 1Visual Microsoft Microsoft Microsoft Microsoft 11. 1 CH 2005 SP1Visual 2003 Visual Visual 2008 SP12010。
MATLAB接⼝简介 MATLAB实现了与众多外部程序和设备的借⼝: 通过MEX⽂件的建⽴,MATLAB能够调⽤C、C++、FORTRAN等程序设计语⾔的⼦程序;通过使⽤MATLAB引擎,可在C、C++、FORTRAN程序代码中直接调⽤MATLAB中的函数与命令;通过MATLAB C/C++数学函数库直接实现C/C++与MATLAB的混合编程,并建⽴可独⽴运⾏程序;通过MATLAB提供的串⼝借⼝,可以实现从外围设备(如MODEM)直接输⼊数据到MATLAB⼯作空间,再利⽤MATLAB 进⾏处理。
1. MEX⽂件 MEX⽂件是MATLAB⼀类外部程序调⽤接⼝,可以在MATLAB中像调⽤MATLAB内建函数⼀样调⽤C、C++、FORTRAN等语⾔编写的⼦程序,⽽⽆需将它们重新编写为MATLAB的M⽂件,从⽽使资源得到充分利⽤。
MEX⽂件有以下⼀些⽤处:对于已存在的C、C++、FORTRAN程序,只需编写接⼝,就可在MATLAB中调⽤,⽽不必重写M⽂件。
对于那些在MATLAB中执⾏效率不⾼的语句(如循环体),可以把它们放在 C、C++、FORTRAN中编写并编译,从⽽提⾼执⾏效率。
2. MATLAB引擎 如果说mex⽂件是为了在MATLAB中调⽤c/c++和fortran编写的⼦程序,那么MATLAB引擎既是为了在c/c++和fortran程序中能够调⽤MATLAB。
MATLAB计算引擎是⼀组允许在别的应⽤程序中与MATLAB交互的函数库和程序库。
在调⽤的过程中,MATLAB引擎函数库在后台⼯作,MATLAB通过它与别的应⽤程序进⾏通信。
通过MATLAB计算引擎可以完成以下功能:调⽤⼀个数学函数或⼦程序来处理数据,如在⽤户程序中求阵列转置或计算⼀个快速傅⾥叶变换等,MATLAB就是⼀个强有⼒、编程灵活的数学⼦函数库。
建⽴⼀个具有特殊⽤途的完整系统,如雷达图像分析或进⾏⽓象⾊谱分析等,可以使⽤c等⾼级语⾔来编写⽤户界⾯,⽽后台采⽤MATLAB作为计算引擎,从⽽达到缩短开发周期,减少开发困难的⽬的。
matlab mingw fortran编译如果你想在Matlab中使用MinGW工具链来编译Fortran代码,你需要进行一些设置和步骤。
以下是一般的步骤:1. 安装MinGW:下载MinGW。
你可以从MinGW的官方网站或者一些第三方网站下载。
安装MinGW。
通常,你只需要按照提示进行默认安装即可。
2. 配置Matlab:确保Matlab知道MinGW的位置。
你可以通过设置`MW_MINGW_PREFIX`环境变量来告诉Matlab MinGW的安装位置。
例如,如果你的MinGW安装在`C:\MinGW`,你可以在Matlab命令窗口中输入:```matlab`setenv('MW_MINGW_PREFIX','C:\MinGW')````3. 设置Fortran编译器:在Matlab中,你可以使用`addpath`命令来添加Fortran文件的路径到Matlab的路径中。
例如:```matlab`addpath('你的Fortran文件路径')````4. 编译Fortran代码:在Matlab中,你可以使用`mex`命令来编译Fortran代码。
例如:```matlab`mex -I你的Fortran文件路径 -L你的Fortran文件路径 -l 你的库名你的Fortran文件名.f90````5. 运行编译的程序:一旦你成功编译了Fortran代码,你可以像运行其他Matlab程序一样来运行它。
6. 注意事项:确保你的Fortran代码是兼容MinGW的。
有些Fortran代码可能使用了特定于特定编译器的特性或函数,这可能会在MinGW上导致问题。
在某些情况下,你可能需要安装额外的库或工具,以便在MinGW上正确编译Fortran代码。
这可能包括特定的Fortran运行时库或特定的Fortran编译器。
7. 错误和问题:如果在编译过程中遇到错误,仔细阅读错误消息并尝试解决问题。
万方数据万方数据万方数据万方数据万方数据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。
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计算引擎实现。
1MEX文件1.1M EX文件介绍M EX文件是由C/F ORTRAN语言编写的,编译后生成MAT LAB动态链接子程序,可MAT LAB中导入和执行,如同MAT LAB的内置函数一样,主要应用有:对已有的C/F ORTRAN 程序,可通过MEX方式在MAT LAB环境中直接调用;对影响MAT LAB执行速度的F OR循环,可以编写相应的C/F ORTRAN 子程序完成相同的功能,并编译成MEX,提高运行速度。
F OR2 TRAN语言MEX文件通常由两部分组成:(1)入口子程序,是计算子程序与MAT LAB环境之间的接口,用来完成相互之间的调用。
其程序的入口点由函数mexFuncti on定义,入口子程序函数的说明格式如下:c人口子程序subr outine mexFuncti on(nlhs,p lhs,nrhs,p rhs)c参数声明:integer p lhs(3),p rhs(3)integer nlhs,nrhs其中p rhs是指向输入变量的mx A rray类型指针,nrhs是输入变量的个数,p lhs是指向输出变量的mx A rray类型指针,nlhs 是输出变量的个数。
(2)计算子程序,是完全的F ORTRAN语言编程,不涉及到任何的接口内容,这部分程序可以单独编写一个子程序或程序子函数。
M EX文件的使用极为方便,只需在提示符下键入MEX文件名即可,与MAT LAB的内建函数的调用方式完全相同,当执行M EX文件时,MAT LAB系统将首先搜索MAT LAB系统的所有可搜索路径(通过路径浏览器设置),然后载入并执行第一个与用户键入的文件名相匹配的可执行文件。
在MAT LAB中,由于M EX文件的执行优先级高于M文件,所以即使一个文件名同时存在两种类型的可执行文件中,也会先执行MEX文件。
F ORT RAN语言的几个常用MEX函数: 1.2MEX文件调用的基本原理MAT LAB和F ORTRAN语言的运算单位不同,MAT LAB以矩阵(mx A rray结构体)为基本数据结构,而在F ORTRAN中,文件是由按顺序排列的记录组成的,而记录是数值或字符的序列,是F ORTRAN程序输入输出的基本单位。
记录有两种格式:格式记录和无格式记录。
格式记录中,数据在文件中的存放是用ASC II码形式;无格式记录中,数据在文件中存放是用二进制代码形式。
由于F ORT RAN和MAT LAB的数据类型不能直接匹配,故需调用MAT LAB的AP I函数来完成二者的数据转换,其基本原理是:MAT LAB将需要传递的mx A rray型数据的内存地址作为一个整型数值传递给F ORT RAN程序,然后在F OR2 T RAN中,AP I提供的访问函数(access r outiness)使用此整数值来访问mx A rray的内容,并将此值作为内存地址,读取相应内容。
传统的F ORTRAN77不支持指针变量,因此必须借助MAT LAB的AP I函数;在F ORT RAN90中,可以通过%val直接使用数据而无须调用子例行程序mxCopyPtrT oReal8和mxCopy2 Real8T oPtr。
1.3MEX文件的编译要编译生成的MEX文件,必须确认已经安装了MAT LAB 应用接口组件及其相应工具,并且要有合适的F ORTRAN语言编译器,在W indows平台下,所使用的编译器必须支持32位的W indows动态链接库(DLL)。
MAT LAB的AP I支持许多编译器,并针对不同的编译器提供不同的选项文件,在生成M EX文件之前必须为编译器配置合适的选项文件。
在MAT LAB命令窗口中键入命令:mex–setup,按提示逐步完成,配置完后,使用命令:mex–f(选项文件名)(源文件名)对源文件进行编译。
2MAT LAB与F ORT RAN数据共享MAT LAB提供了多种数据输入输出方式,用户可以根据需要灵活选择,MAT LAB与F ORT RAN实现数据共享有以下几种方式:2.1AS C II码方式AS C II是计算机中用得最广泛的字符集及其编码,ASC II码的数据文件中的数据形式必须是一个矩阵,要求数据文件每一行的数据个数必须相同,每行数据对应于矩阵的每一行,每行的元素用空格分开。
把F ORT RAN输出数据保存为ASC II码文件形式,在MAT LAB中用:l oad文件名(带扩张名),该语句在MAT LAB工作空间创建一个与文件名(无扩展名)相同的变量,该变量表示的矩阵即是AS C II码文件的数据组成的矩阵。
2.2底层I/O方式—581—MAT LAB 提供了文件底层操作函数来装入某种特定格式的数据文件,可以f open 和fread 读取F ORT RAN 创建的数据文件。
2.3M EX 动态程序方式开发MAT LAB 的动态链接MEX 子程序使原有的F OR 2TRAN 程序和MAT LAB 链接在一起。
2.4外部程序转换开发F ORT RAN 程序将数据文件直接转换成MAT LAB 的MAT 数据文件,再用l oad 命令装入到MAT LAB 系统中。
MAT 文件是MAT LAB 系统保存文件的默认文件格式,它把文件存储为二进制格式,这种格式为在不同平台或不同应用程序间移动MAT LAB 数据提供了一种便利的机制。
一般使用MAT LAB AP I 来完成MAT 文件的读取与存储,常用的函数有:3MAT LAB 引擎3.1MAT LAB 引擎简介Engine 是指一组MAT LAB 提供的接口函数,通过这些接口函数,用户可以在C /F ORT RAN 的应用程序中实现对MAT LAB 的控制,完成与MAT LAB 引擎的数据交换和命令传递任务。
几个常用的MATLAB 引擎的函数: 同时,引擎应用程序还可以使用前面提到的AP I 函数。
3.2引擎调用的基本原理当F ORTRAN 程序调用某个MAT LAB 函数或命令时,首先通过引擎函数启动MAT LAB 并建立ActiveX 通道,然后把这个函数或命令通过ActiveX 通道传给MAT LAB,由MAT LAB 在后台执行,这可以分成两步来完成:第一步将mx A rray 转换成MAT LAB 可理解的形式。
用mxCreate 来创建一个和要传递的数据类型大小相同的矩阵mx A rray;第二步将矩阵放入MAT 2LAB 工作区中,用程序engPut M atrix 和engEvalString 来完成。
3.3引擎程序的编译在MAT LAB 下作空间执行mex -setup 选择编译器,假设使用F ORT RAN V6.0,源程序名为filena me .f 的文件编译格式如下:mex -f [MAT LAB 根目录」\bin \df60eng mat op ts .bat filena me .f 。
结论通过AP I 函数不仅可以在MAT LAB 下以动态链接库的形式调用F ORT RAN 语言编写的子程序,而且可以在F ORTRAN 语言中调用MAT LAB 的大量函数,将MAT LAB 作为一个计算引擎,完成MAT LAB 与外界必要的数据交换,极大地增强了MAT LAB 的灵活性,实现F ORTRAN 程序的计算结果可视化。
参考文献[1]刘志俭.MAT LAB 应用程序接口用户指南[M ].北京:科学出版社,2000[2]贺红梅,包军.MAT LAB 与F ORT RAN 程序的接口技术[J ].电力学报,2002,17(2):126-127[3]飞思科技产品研发中心.MAT LAB 6.5应用接口编程.电子工业出版社,2001:109-113(上接184页)当然万兆以太网是刚发展起来的新的技术力量,有它的不足之处,如其标准有待完善,如现标准传输介质只允许采用光纤,而不能采用铜缆。
我们期待其万兆铜缆I EEE 802.3ak 标准的公布。
届时万兆每端口价格就会下降。
万兆交换机价格偏高也是阻碍其发展的因素,目前我国图书馆的经费有限,只有个别经费充足的图书馆有条件从千兆升级到万兆。
结语随着I EEE802.3ae 标准的批准实施,10GbE 技术已成为当今网络技术发展的热点,10GbE 技术将被广泛地应用于各种骨干网络与存储网络中,这两者都是图书馆网络的核心需求。
随着图书馆资源的不断增加和服务的不断提高,当图书馆带宽成为瓶颈时,万兆以太网的应用能够打破瓶颈,为图书馆提供高带宽、高性能的网络服务,包括组播服务、身份认证以及网络性能保障等多项服务。
能够顺利地开展视频、话音、数字图书馆、多媒体数据,资源共享等各种网络应用。
就像当年百兆升级十兆,千兆升级百兆一样,万兆也将会成为未来图书馆骨干网络的主流。