Matlab与Fortran混合编程之DLL实现方法.pdf
-
资源ID:70021232
资源大小:352.90KB
全文页数:4页
- 资源格式: PDF
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
Matlab与Fortran混合编程之DLL实现方法.pdf
C o m p u t e r E n g i n e e r i n g a n d A p p l i c a t i o n s 计算机工程与应用 博士论 坛 Ma t l a b与F o r t r a n 混合编程之D L L实现方法 潘克家1,2,3汤井田 ,郑洲顺 P AN Ke j i a ,T A NG J i n g t i a n。,Z HE NG Z h o u s h u n 2 1 中南大学 地球科学与信息物理学院,长沙 4 1 0 0 8 3 2 中南大学 数学科学与计算技术学院,长沙 4 1 0 0 8 3 3 高性能计算与随机信息处理教育部重点实验室,长沙 4 1 0 0 8 1 1 S c h o o l o f Ge o s c i e n c e s a n d I n f o-P h y s i c s,Ce n t r a l S o u t h Un i v e r s i t y,Ch an g s h a 4 1 0 0 8 3,C h i n a 2 S c h o o l o f Ma the ma t i c a l S c i e n c e s and Co mp u t i n g Te c h n o l o g y,Ce n tra l S o u th Un i v e r s i ty,Ch a n g s h a 41 0 0 8 3,Ch i n a 3 HP CS I P Ke y La b o r a t o r y,Mi n i s t r y o f E d u c a t i o n,Ch a n g s h a 41 0 0 8 1,Ch h a a P AN Ke j i a,T AN G J i n g t i a n,Z H E NG Z h o u s h u n Mi x e d l a n g u a g e p r o g r a mmi n g i n Ma t l a b a n d F o r t r a n v i a d y n a mi c H n k l i b r a r y C o mp u t e r E n g i n e e r i n g a n d Ap p fi c a fi o n s。2 0 1 1 4 7(3 1):1-3 Ab s t r a c t:T h e a d v ant a g e s a n d d i s a d v a n t a g e s o f Ma t l a b and F o r t r a n i S b rie fl y i n tro d u c e d i n thi s a r t i c l e An d t wo me t h o d s o f mi x e d l a n g u a g e p r o g r a mmi n g t h r o u g h c a l l i n g F o r t r a n d y n a mi c l i n k l i b r a ry f r o m M a t l a b a r e d i s c u s s e d i n d e t a i l T a k e Ga u s s J o r d a n e l i mi n a t i o n wi th p a r t i a l p i v o t ing f o r e x a mp l e,the c o mp u t a t i o n a l r e s u l t s o f the s a me a l g o rit h m u n d e r a v a r i e ty o f diffe r e n t i mp l e me n t a t i o n wa y s a r e c are f ul l y c o mp are d i n t e r ms o f a c c u r a c y a n d c o mp u tat i o n a l t i me T h e r e s u l t i n dic a t e s tha t,mi x e d l an g u a g e p r o g r a mmi n g v i a d y n a mi c l i n k l i b r a r y c a n ma k e f u l l o f e x i s t i n g p a c k a g e s,c o mb i n e h i e ffic i e n c y o f F o r t r a n wi th p o we r f u l ma t r i x c o mp u tat i o n and fi g u r e d r a wing and c o mp i l i n g f u n c t i o n s o f Ma t l a b,t h u s c o n for mi n g t o t h e C ur-r e n t d e v e l o p me n t d i r e c t i o n o f p r o gra mming i n s c i e n t i fic and e n g ine e r i n g c o mp u t i n g Ke y wo r d s:d y n a mi c l i n k l i b r a r y;mi x e d-p r o g r a mmi n g;Ma t l a b;F o r t r an;Ga u s s-J o r d a n e l i mi n a t i o n 摘要:简要介绍Ma t l a b 和F o r t r an各 自的优缺点,详细阐述Ma t l a b 调用F o r t r an生成的动态链接库实现混合编程的两 种方法。以 高斯约当列主元素法求逆为例,从计算时间、精度等方面详细比较了同一算法在多种实现方式下的执行情况。计算结果表明:基 于动态链接库的混合编程方法能充分利用现有软件 包,结合F o r t r an计算效率高、Ma t l a b 矩阵计算及图形处理功能强的优点,符合 当前科学工程计算程序设计的发展方向。关键词:动态链接库;混合编程;Ma t l a b 语言;F o r t r a n 语言;高斯 约 当消去法 DOI:1 0 3 7 7 8 0 i s s n 1 0 0 2。8 3 3 1 2 0 1 1 3 1 0 0 1 文章编号:1 0 0 2 8 3 3 1(2 0 1 1)3 1-0 0 0 1 0 3 文献标识码:A 中图分类号:T P 3 1 1 1 1 1 研究意义 Ma t l a b 被称作第四代计算机语言,具有开发效率高、可视 化性强、尤其矩阵计算及图形处理功能强等优点,已逐渐成为 科学和应用领域重要工具和首选平台。目前,Ma t l a b 语言已 在科学工程计算、控制设计、信号处理与通讯、图像处理、信号 检测、金融建模设计与分析等领域获得了广泛应用。相比其 他高级语言c,C+、F o r t r an等来说,Mat l a b 能明显缩短开发周 期,因此特别适合开发小型应用,或者对算法进行验证与开 发。然而,Ma t l a b 语言作为一种解释性语言,在涉及循环、迭 代等大量的计算方面效率偏低,不适合单独完成大型复杂的 数值计算。F o r t r an是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。F o r t r an语言的最大特性是 接近数学公式的 自然描述,在计算机里具有很高的执行效 率。尤其F o r t r a n 9 0 标准引入了数组计算等非常利于矩阵运算 的功能,可直接对矩阵和复数进行运算,且数组运算时,F o r t r a n 自动并行处理,这是很多高级编程语言不具备的。自 诞 生以来,积累了大量高效而可靠的源程序和函数软件包(如 I MS L、MK L 等)。动态链接库(D y n a m i c L i n k L i b r a r y,D L L)是一个包含可 由多个程序同时使用的代码和数据的库。动态链接提供了一 种方法,使进程可以调用不属于其可执行代码的函数。函数 的可执行代码位于一个 D L L 中,该 D L L 包含一个或多个已被 编译、链接并与使用它们的进程分开存储的函数。多个应用 程序可同时访问内存中单个D L L 副本的内容。使用动态链接 库具有如下优点:扩展了应用程序的特性;简化了软件项目的 基金项 目:国家高技术研究发J酗十 划(8 6 3)(t h e Na ti o n a l H i g h T e c h R e s e a r c h a n d D e v e l o p m e n t P l a n o f C h i n a u n d e r G r ant N o 2 0 0 7 A A 0 6 Z 1 3 4):国家重点基础研究发展规划(9 7 3)(N 0 2 0 1 1 C B 6 0 6 3 0 6);中南大学自由探索计划(N 0 2 0 1 1 Q N Z T 1 0 2);中南大学博士后科学基金。作者简介:潘克家(1 9 8 1 一),男,讲师,在站博士后,中南大学地质资源与地质工程博士后流动站,主要研究领域为智能计算、优化算法;汤井田(1 9 6 5 一),博士,教授,博士生导师;郑洲顺(1 9 6 4 一),博士,教授,博士生导师。E-m a i l:k j p a n y a h o o c n 收稿日期:2 0 1 1 0 5 1 9;修回日 期:2 0 1 1-0 7 2 9 2 C o m p u t e r E n g i n e e r i n g a n d A p p l i c a t i o n s 计算机工程与应用 管理与升级;有助于节省内存、实现资源共享;可以用多种编 程语言来编写。本文研究利用动态链接库实现Ma t l a b 与F o r-t r a n 混合编程。通过混合编程,能充分利用大量现有的优秀软 件包(Ma t l a b 库函数、F o r t r a n 函数软件包 I MS L 等),缩短软件 开发周期;并且可以结合F o r t r a n 计算效率高、Ma t l a b 矩阵计算 及图形处理功能强的优点,为一种值得推荐的编程方式。2 相关工作 Ma t l a b 与V C、V B可以相互调用,并且实现方式非常多,相关的研究工作可参考文献 1 6】。其混合编程方法主要有如 下几种:(1)基于 C O M技术。;(2)tJ 用动态链接库;(3)调用 Ma l t a b 引擎 A P I 函数。至今为止,关于Ma t l a b 与F o r t r an混合 程序设计的研究比较少。2 0 0 0 年,聂万胜等通过 F o r t r an调用 Ma t l a b 引擎,实现了F o r t r a n 程序结果的可视化7 ;2 0 0 8 年,徐天 吉等也是利用F o r t r a n 调用Ma t l a b 引擎混合编程,并运用到小 波域地震信号多尺度分析中 】。以上研究都是通过F o r t r a n 调 用Ma t l a b 引擎实现混合编程,实现非常简单,但不能脱离Ma t l a b 环境运行本质上还是在 内部调用Ma t l a b 命令,并且运行速度 比较慢,不适合开发计算量较大、实时性要求比较高的程序。主要介绍基于动态链接库方式的Ma t l a b 和F o r t r an混合编 程方法,将计算量最繁重的工作由执行效率高的F o r t r an语言 来完成,在 Ma t 1 a b 中利用提供的接 口技术完成特定的任务。通过混合编程,既能充分提高Ma t l a b 程序的执行效率,减轻代 码编写工作、缩短软件开发周期、又能弥 b F o r t r an程序图形功 能弱、计算结果难于可视化的缺陷。3 Ma t l a b 调用F o r t r a n 动态链接库 混合语言程序设计中的主要问题:如何在编程时遵循不 同语言中变量和过程的命名约定、堆栈使用约定以及函数调 用过程中的参数传递约定“。其中堆栈约定确定子过程的参 数数目是否可变以及何时进行调用后的清理堆栈工作;命名 约定确定标识符是否对大小写敏感及编译后对标识符如何修 饰;参数约定确定参数传递时是传值方式还是传址(引用)方 式及不同语言之间的数据类型和数据结构如何对应n 。F o r t r an语言调用约定有三种,即:S T D C A L L约定、C 约定和 D e f a u l t 调用约定。Ma t l a b 可由如下两种方式调用F o r t r an语言编写的动态链 接库。第一种方式:利用 Ma t l a b 中m e x 命令将F o r t r an语言编 写的函数编译成m e x 文件(后缀名为m e x w 3 2),便可在Ma t l a b 中像调用内嵌函数一样调用。Me x 文件实际上为一种Ma t l a b 专用的动态链接库文件。第二种方式:利用F o r t r an编译器将 F o r t r a n 语言编写的函数编译成通用3 2 位的动态链接库(后缀 名为d 1 1),Ma t l a b 通过几个专门的A P I 接口函数调用。3 1 Ma t l a b 调用m e x 文件 Me x 文件的编写和编译必须具备两个基本条件:一是必 须按照 Ma t l a b 应用程序接 口组件和相关工具,二是要有c或 者F o r t r an 语言的编译器。在编译 m e x 文件之前还必须利用 m e x s e t u p 命令对Ma t l a b 系统进行设置,使Ma t l a b 系统知道使 用系统的哪个语言编译器,以及相应的参数和路径【2 1 o本文软 件 环境 为 Ma t l a b R 2 0 1 0 b、F o r t r an 编 译器 采 用 I n t e l V i s u a l F o r t r a n 1 0 1(w i t h Mi c r o s o f t V i s u a l C+2 0 0 5 S P 1 l i n k e r)。3 1 1 m e x 文件的编写 通常一个典型的F o r t r an语言m e x 文件由两个截然不同的 部分组成,它们分工明确,用于完成不同的任务:(1)第一部分为计算子程序,它包含了所有完成实际计算 功能的源代码,用来完成实际的计算工作;(2)第二部分称为入 口子程序,它是计算子程序与Ma t l a b 环境的接口,用来完成两者之间的通信任务。本节以计算实矩阵逆矩阵的G a u s s J o r d an列主元素法为 例,给出一个m e x 文件的实例。!入口子程序 G J_i n v f 90 s u b r o u t i n e me x F u n c t i o n(n l h s,p l h s,n r h s,p r h s)!p lh s(*),p r h s(*)分别为输出、输入参数的指针数组,n l h s、n r h s 分 别为输出、输入参数的个数 i n t e g e r n l h s,n r h s,p l h s(),p r h s()!调用A P I 库函数申明 int e g e r mxGe&r,mxCr e a t e Do u b l e Ma t r i x,mx Ge t M,mxGe t N!程序内部使用变量申明 i n t e g e r A pr,r Lp r,m,n d o u b l e p r e c i s i o n,a l l o c a t a b l e:A(:,:)!获取第一个参数维数 m-m x G e t M(p r h s(1);n-m x G e t N(p r h s(1)!动态数组分配内存 A l l o c a t e(A(n,n)!创建输出参数矩阵 p l h s(1)=m x C r e a t e D o u b l e Ma t r i x(n,n,0)!获取输入参数的数据指针 A_p r=m x G e t P r(p r h s(1);n A r=m x G e t P r(p r h s(2)!将数据类型转换为双精度类型数据 c a l l m x C o p y P t r T o R e a l 8(A_p r,A,n n)c a l l m x C o p y P t r T o l n t e g e r 4(n A 3 r,n,1)!调用求逆矩阵的计算子程序G J i n v c a l l GJ_in v(A,n)!将计算结果返回输出数据指针 c a l l m x C o p y R e a l 8 T o P t r(A,m x G e&r(p s(1),n n)!动态数组释放内存 De a l l o c a t e(A)e n d !计算子程序(具体程序代码略)s u br o u t i n e OJ_i n v(A,n)3 1 2 m e x 文件的编译 对me x G J-m f 9 0 命令进行编译,便可得到G J _ i n V I n e x w 3 2 动态链接库文件。运行结果如下:me x GJi n v f 9 0 A=GJ_i n v(h i l b(2),i n t 3 2(2)求二阶H i l b e r t 矩阵的逆矩阵 Al-4 0 0 0 0 60 0 0 0 6 0 0 0 0 1 20 0 0 O 注:调用GJ_i n v 求逆时,第二个参数必须利用函数 i n t 3 2 转化为整型,因为常数2 在Ma t l a b 里亦默认为双度浮点型。3 2 Ma t l a b 调用D L L动态链接库 本节采用的F o rt r an编译器为C o m p a q V i s u a l F o r t r a n P r o f e s s i o n a l E d i t i o n 6 6,自 带I MS L 6 0 软件包。3 2 1 Dl l 文件的生成 以G a u s s J o r d an列主元素法为例,有如下两种方式实现求 逆算法。第一种方式,利用之前生成m e x 文件时 自己编写的 s u b r o u t i n e G J i n v(A,n)子程序;第二种方式,直接利用I MS L 中i 求逆矩阵。第一种方式,生成动态链接库具体步骤如下:潘克家,汤井田,郑洲顺:Ma t l a b 与F o r t r a n 混合编程之D L L实现方法 3 (1)创建一个 F o r t r a n D y n a m i c L i n k L i b r a r y S E 程。(2)在工程中添加实现G a u s s J o r d a n 列主元素求逆算法的 G J in v mO S 。(3)在 G J i n v f 9 0 文件中,s u b r o u t i n e G J i n v(A,n)之后插 入一条伪注释语句:!DE C$A T T R I B UT ES C,DL L E X P OR T:GJ_i n v 表明库函数G J _ i n v 在动态链接库外可被调用,并按c调 用约定。(4)编译生成G J i n v D L L 动态链接库文件。(5)编写和C 语言等效的D L L 输出函数定义头文件i n v h,具体内容如下:v o i d a d d(d o u b l e*,i n t);第二种方式,只需将上述(2)、(3)两步骤生成的G J i n v f 9 0 文件改为:s u b r o ut i n e GJi n v(A,n)us e i ms l !Ex p os e s u b r o u t i n e GJi n v t o u s e r s of t h i s DLL !DE C$A T T R I B UT E S C,DL L E XP OR T:G J_inv i n t e g e r n d o u b l e p r e s i c i o n A(n,n)A=i A e n d s ub r o u t i n e GJinv 3 2 2 D L L动态链接库的调用 Ma t l a b lJ 用三个内部函数l o a d l i b r a r y、c a l l l i b 和u n l o a d l i b r a r y 调用F o r t r an生成的通用D L L 动态链接库,具体步骤如下:(1)利用l o a d l i b r a r y I 载动态链接库及对应头文件。(2)利用c a l l l i b 调用动态链接库中的输出函数。(3)利用u n l o a d l i b r a r y 释放动态链接库。在Ma t l a b E d i t o r 中编写m a i n m文件:c l e a r c l c l o a d l i b r a r y(GJ_i n v DL L,i n v h);A=c a l U i b(G J_inv,GJ_in v ,h i l b(2),2)调用动态链接库计 算 2 阶H i l b e 矩阵的逆矩阵 u n l o a d l i b r a r y GJ_inv 程序运行结果:A=4 0 0 0 0 60 0 0 0 6 0 0 0 O 1 20 0 0 0 3-3 两种调用动态链接库方式比较 与高级语言调用Ma t l a b 引擎实现混合编程方式相比,本 文介绍的两种 Ma t l a b 调用 F o r t r an动态链接库的方式,均可脱 离Ma t l a b 环境独立运行,且执行效率较高,详见下节具体算 例。这两种混合编程方式生成的程序具有独立性强和执行效 率高的特点,因此适用于实时性强、执行速度要求高的应用。两种调用动态链接库混合编程的方式又有各 自的优缺 点,详见表 1。4 应用实例 本章数值计算采用的微机为 I n t e l C o r e i 5 7 6 0 处理器、2 G B内存,操作系统为Wi n d o w s X P。算例具体步骤:首先利用Ma t l a b 中r a n d 命令生成随机方 阵,然后利用如下4 种方法分别求其逆矩阵。第一种方法直接 调用Ma t l a b 编写的求逆矩阵的G J i n v m文件,第二种方法调 用通过 m e x 命令生成的G J 动态链接库,第三、四_ i n v m e x w 3 2 表 1 两种调用动态链接库比较 优点 缺点(1)Me x 动态链接库 只能被(1)使用方便、调用时和直接调 Ma t l a b 调用,通用性差 调用Me x 动态 用Ma t la b 内嵌函数一样(2)需要编写比较复杂的入口 链接库(2)执行效率比较高 子 程 序 m e x F u n e t i o n,完 成 F o r t r a n 和Ma 廿 曲之间的通信(1)方便使用现有软件包(如 I MS L,MK L等),减轻代码编 写工作,缩短软件开发周期(1)需要单独编写相应的头文 调用通用D L L(2)通用D L L 动态链接库方便 件(-h 文件)动态链接库被其他高级语言(如 c+、V B(2)调用时相对比较复杂,需 等)调用,真正实现代码重用 要利用l o a d l i b r a r y、c a l ll ib、t il l-(3)依赖F o r t r a n 语言计算效率 l o a d l ib r a r y 等 A P I 函数加载,高的优势,大大提高Ma t l a b 程 调用和释放动态链接库 序的计算效率 种方法均调用F o r t r a n 生成的通用D L L 动态链接库,不过第三 种方法中求逆算法为自己编写,第四种方法直接调用I MS L 库 中的 i 求逆。为了方便比较,前三种方法中求逆算法均采用高 斯约当列主元素法,且算法实现细节完全相同。表2 随机3 0 0 阶矩阵求逆结果 m文件 me x 3 m 1 文件 I MS L+d l I 3 :表3 随机5 0 0 阶矩阵求逆结果 表4 随机 1 0 0 0 阶矩阵求逆结果 m文件 me x 文件 d 1 1 文件 I MS L+dl 文件 表2 表4 中误差为l I A*i 一 一 l I,其中A为Ma t l a b 产生 的随机矩阵,为各种方法求得的近似逆矩阵。矩阵 A的 2 范数:l I A l l 2=一(其中。()表示 A A的最大特征值。加速比为m文件运 行时间与其他方法运行时间之比。从表中可以看出,前三种方法(调用m文件、m e x w 3 2 文件 和通用D L L 动态链接库)计算结果完全相同,这是因为三者采 用的算法完全相同,并且 F o r t r an和Ma t l a b 均采用双精度浮点 数进行计算。而调用I MS L 求逆的结果与前三种方法不完全 相同,但亦基本致,对三 章 芸例误差均保持在同数量级。从计算时间来看,调用m文件最慢,调用I MS L 生成的D L L 动态链接库最快,加速比达到3 0 左右。而调用Ma t l a b 生成的 m e x 动态链接库和 F o r t r an生成的通用D L L 动态链接库相比,规模不是很大(3 o o 阶、5 0 0 阶)时,调用D L L 动态链接库具有 明显优势,而对于比较大的规模(1 0 0 0 阶)时,两者计算速度差 不多,运行时间分别为 1 2 0 3 秒和 l 2 1 8 秒。并且发现:随着矩阵规模的逐渐增大,调用me x w 3 2 文件(下转2 3 页)一 一 一 髓 闰 英,叶怀珍,锁斌:非精确信息下基于证据理论的融资策略分析 资业务,可以提升企业的利润和市场竞争力。在市场波动、存 在大量非精确信息时,企业在融资业务的选择上存在困难。为解决这一问题,以延期支付和存货质押两种融资业务的选 择为例,基于D s 证据理论建立了非精确信息下两种融资业务 的决策模型。实例分析表明,在非精确信息下,利用本文提出的模型进 行定量计算,可以较为直观地为企业的融资行为做出指导。另外,对比两个算例的仿真结果可以看出,延期支付业务对于 回款周期f 很敏感,f 的增大会严重降低企业的利润,这在缺货 惩罚成本较大时会愈加明显。因此,若要采用延期支付业务,必须保证货物销售的回款周期足够小。否则,采用存货质押 业务往往更为有利。此外,本文提出的方法也可用于企业对仓单质押、保理融 资等其他融资业务的决策分析,以及其他存在非精确信息的 决策问题,具有广泛的适用性。参考文献:1 B h a b a R S,Ma h mo o d A KOp t i ma l o r d e r i n g p o l i c i e s i n r e s p o n s e t o a d i s c o u n t o ff e r J I n t e r n a t i o n a l J o u r n a l o f P r o d u c t i o n E c o n o mi c s,2 0 0 6,1 0 0(2):1 9 5 2 1 1 2 2 杨树,梁梁,邱吴 考虑延期支付的斯坦博格库存模型 J 系统工 程,2 0 0 6,2 4(4):2 1 2 4 3】L i a o H C,C h e n Y K Op t i ma l p a y me n t t i me f o r r e t a i l e r s i n v e n t o r y s y s t e m J I n t e rna t i o n a l J o u r n a l o f S y s t e ms S c i e n c e,2 0 0 3,3 4 (4):2 4 5 2 5 3 4 杨桢,罗兵 一种价格折扣和延期支付条件下最优支付时间确定 J 中国管理科学,2 0 0 8,1 6($1):4 7 3 4 7 6 5 胡愈,柳思维 物流金融及其运作问题讨论综 J】经济理论与经济 管理,2 0 0 8(2):7 5 7 9 6】J o k i v u o l l e E,P e u r a S I n c o r p o r a t i n g c o l l a t e r a l v a l u e u n c e r t a i n t y i n l o s s g i v e n d e f a u l t e s t i ma t e s a n d l o an-t o v a lu e r a t i o s J E u r o-p e a n F i n a n c i a l Ma n a g e me n t,2 0 0 3,9(3):2 9 9 3 1 4 【7 于辉,甄学平冲 小企业仓单质押业务的质押率模型 J _ 中国管理 科学,2 0 1 0,1 8(6):1 0 4 1 1 2 8 B u z a c o t t J A,Z h a n g R Q I n v e n t o ry ma n a g e ment wit h a s s e t b a s e d fi n anc i n g J Mana g e me n t S c i e n c e,2 0 0 4,5 0(9):1 2 7 4 1 2 9 2 9 9 何明珂,钱文彬 物流金融风险管理全过程 J】系统工程,2 0 1 0,2 8 (5):3 0 3 5 1 0 L a t i f a O,Al e x and r a D,T h i e r r y D,e t a 1 F a u l t d i a g n o s i s in r a i l wa y t r a c k c i r c u i t s u s i n g De mp s t e r-S h a f e r c l a s s i fi e r f u s i o n J E n-g i n e e r i n g Ap p l i c a t i o n s o f Ar t i f i c i a l I n t e l l i g e n c e,2 0 1 0,2 3(1):1 1 7 1 2 8【1 1 Ot ma n B,Y u a n X H E n g ine f a u l t d i a g n o s i s b a s e d o n mu l ti s e n-s o r i n f o r ma t i o n f u s i o n u s i n g De mp s t e r-S h a f e r e v i d e n c e the o ry J I n f o r ma t i o n F u s i o n,2 0 0 7,8(4):3 7 9 3 8 6 1 2】高会生,朱静基于D s 证据理论的网络安全风险评估模型 J 计 算机工程与应用,2 0 0 8,4 4(6):1 5 7 1 5 9 【1 3】De mp s t e r A P U p p e r a n d l o we r p r o b a b i l i t i e s ind u c e d b y a mu l t i v a l u e d ma p p i n g J An n a l s o f Ma t h e ma t i c a l S t a t i s t i c s,1 9 6 7,3 8(4):3 2 5 3 3 9 1 4 杨风暴,王肖霞 D s 证据理论的冲突证据合成方法 M 北京:国 防工业出版社,2 0 1 0 1 5 Y an Yi n g,Ye Hu a i z h e n,C h e n S i De c i s i o n ana l y s i s o f t w o f i-n a n c i n g me tho d s t o a v o i d the d e s t r o y i n g o f fi r m c a p it a l c h a i n e l I n t e r n a t i o n a l Co n f e r e n c e o n Tr a n s p o r t a t i o n En g i n e e r i n g,2 01 1 (上接 3 页)和通用D L L 动态链接库的加速效果逐渐变差,两者加速方法 加速 比分别 由3 0 0 阶时的 1 2 0 1、2 0 6 6 下降为 1 0 0 0 阶时的 3 5 6、3 5 1。值得注意的是,采用第四种方法(即调用I MS L中 i 求逆生成的D L L 动态链接库),加速比几乎保持不变,求解 1 0 0 0 阶方阵的逆矩阵时,仍能达到将近3 0 倍的加速。高斯约当法求 n 阶方阵的逆大概需要”2 次乘除法运 算,为 1 0 0 0 时,大概需要5 亿次乘除法运算。而此时采用第 四种方法计算时间仅为 1 4 5 秒,误差达到 1 0 5 1 0 ,也比其 他三种方法的误差稍小。尤其值得一提的是,第四种方法求 逆算法直接调用 I MS L中 i 实现,并不需要 自己编写求逆代 码,非常简便。既大大提高了Ma t l a b 计算效率,又省去了编写 代码的工作,是一种值得推荐的混合编程实现方式。5 结论 使用动态链接库技术极大地提高Ma t l a b 语言与其他高级 语言的接口编程能力。结合实例详细介绍了两种Ma t l a b 中使 用动态链接库的方法,为Ma t l a b 混合编程提供了一种新的、有 效的工程实现方法。具体结论如下:(1)F o r t r a n 9 0 语言数组功能强大,有大量内部函数支持数 组整体操作,且能自 动进行并行计算,非常 适合大规模科学计算;(2)调用现有优秀软件包(如 I MS L)、不仅能减轻代码编 写工作,更能有效提高代码质量;(3)lJ 用动态链接库技术既能充分利用现有资源,又可提 高 Ma t l a b 语言的计算效率;(4)通用的D L L 动态链接库,不仅方便利用现有软件包,而且相比m e x 动态链接库效率更高,方便被其他语言,如 c c+、V B 等调用,真正实现代码重用。参考文献:1 Ma t l a b CO M b u i l d e r u s e r s g u i d e Z T h e Ma thw o r k s I n c,2 0 0 2 2】岳玉芳,尤忠生,张玉双 基于C O M的V B与Ma t l a b 混合编程【J】计 算机工程与设计,2 0 0 5,2 6(1):6 1 6 2 3 姚光强,陈立平 基于C O M技术的c 与Ma t l a b 混合编程 J】计算机 工程,2 0 0 8,3 4(4):8 7 8 9 4 肖永韧,解习农,刘晓峰 V C 与MA T L A B混合编程之D L L 实现方 法 J 计算机工程与应用,2 0 0 1,3 7(1 3):1 7 4 1 7 6 5 陶红,袁金荣 MA T L A B与 C Ni s u a l c+混合编程的实现 J 计算 机工程与应用,2 0 0 0,3 6(1 0):1 0 0 1 0 1 6 6 谭炎,张凌燕 MA T L A B与V B混合编程技术研究 J _ 微计算机信 息,2 0 0 6,2 2(1 5):2 4 7 2 4 9 7】聂万胜,庄逢辰,黄玲,等 F O R T R A N程序调用MA T L A B引擎实现 计算可视化 J 计算机应用,2 0 0 0,2 0(1 1):6 0 6 2 8 8 徐天吉,程冰洁