MATLAB与C_VisualC_混合编程的实现

更新时间:2023-06-10 17:51:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB与C_VisualC_混合编程的实现

!"#$"%与&’()*+,-&..混合编程的实现/

(上海!"""?8)

G%L’A):CM’EN<OPM*)ADQ#>(’#ER(#DE

首先分析了当前在国内外十分流行的工程设计和系统仿真软件包&’()’*的优缺点,然后介绍了&+,-+.与

袁金荣

同济大学地下建筑与工程系

(上海!"""?!)

上海理工大学城建学院

并主要介绍&’(D;L(一种将&’()’*与1UU结合的工具)的功能及使用方法,最后对1STA>M’)1UU混合编程的两种方法,其效果进行了总结。关键词

&’()’*TA>M’)1UU&’(D;L混合编程

012-3134567896:9,11)4:;<&61;)4)4:!"#$"%

=)5>&’()*+,-&..

#,6?64:

V1;))RWR;HX<*’E1;E>(<MD#’EYGEZA<;E#GEW<#,XEAZ#;H/9’EW9’AH;</DA#’EY,RD9#,/9’EW9’A!"""?8[

@+,4A)4964:

V\RP(#;H]R;(RD9EAD’)GEW<#,,;EW^AXEAZR<>A(C,/9’EW9’A!"""?![

";*59,B5:&’()’*,’P<RY;LAE’(R>;H(_’<RH;<REWAERR<AEWYR>AWE’EY>C>(RL>ALM)’(A;E’EYA(>’YZ’E(’WR>’EYYA>Z’EJ

(’WR>’<RAE(<;YMDRYAE(9A>P’PR<‘+EY(9RE<RZAR_RYYAHHR<RE(P<;W<’LLAEWLR(9;Y>_A(9&’()’*’EY1STA>M’)1UU‘&’(D;L,’YRZR);PLRE((;;)>H;<D;L*AER&’()’*’EY1UUA><RD;LLREYRY#C3<=69D*:&’()’*,TA>M’)1UU,&’(D;L,1;L*AERYP<;W<’LLAEW

$引言

随着计算机技术的发展,生物工程、图象信号处理、语音信

体,构成了一个方便、界面友好的用户环境。与.’>AD、2;<(<’E、

F’>D’)、1等编程语言相比,&’()’*具有编程简单直观,用户界

面友好,开放性强等优点,因此其自面世以来,在国际上很快得到了推广利用,被0GGG称为国际公认最优秀的科技应用软可用来求解特件。它还包括了各类问题的求解工具箱,;;).;B,定学科的问题。其主要优点如下:

可扩展性:它允许用($)&’()’*最重要的特点是易于扩展,户自行建立指定功能的&文件。对于一个从事特定领域的工程师来说,不仅可利用&’()’*所提供的函数及基本工具箱函数,还可方便地构造出专用的函数,从而大大扩展了其应用范工具箱)有数百种之多。而围。当前支持&’()’*的商用,;;)*;B(由个人开发的,;;)*;B则不可计数。

易学易用性:(!)&’()’*不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。

高效性:一条语句可完成十(8)&’()’*语句功能十分强大,分复杂的任务。如HH(语句可完成对指定数据的快速傅立叶变换,这相当于上百条1语言语句的功能。它大大加快了工程技术人员从事软件开发的效率。据&’(9:;<=>公司声称,&’()’*软件中所包含的&’()’*源代码相当于I"万行1代码。

由于&’()’*具有如此之多的特点,在欧美高等院校,&’(J自动控制理论、数理统计、数字信)’*已成为应用于线性代数、

号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;在研究单位、工业部门,&’()’*也被广泛用于研究和解决各种工程问题。当前在全世界有超过K"万工程师和科学家使用它来分析和解决问题。

号处理、雷达工程、信号分析、时间序列分析,以及控制论、系统论,均要涉及到大量的数值计算,尤其是矩阵运算,往往会使科研人员的工作进程放慢下来,而且纷繁的编程,一方面会延误工作;另一方面也消耗大量的人力和精力对所编程序进行调试。为了克服这种困难,该文介绍一个非常高效的程序开发工具%&’()’*。这种软件集所有矩阵问题及其它计算问题于一身,它易于掌握并可很方便地根据用户自己的情况进行扩展,形成新的标准子程序,且运算效率极高。&+,-+.是一种进行科学和工程计算的交互式程序。它的基本数据单元是不需要指定维数的矩阵,因此解决同样的数值计算问题,使用&+,-+.要比使用.+/01、234,4+5、1等语言编程要提高效率几倍。为了如能将&+,-+.语言和其它更好地发挥&+,-+.的的功能,

高级语言(如1语言或234,4+5语言等)结合实现混合编程,从而发挥各自的优势,这对于熟悉某种语言的工程技术人员来说,往往可以起到事倍功半的效果,此种方法国内外曾有

!7

,但未作详细论述,或方法较复杂,而且由于软件更新报道6$,

很快,以往介绍的方法可能已不适用。该文将在全面阐述介绍两种混合编程方法。&+,-+.特点的基础上,

!工程计算可视化软件&’()’*优缺点分析

是&’(9:;<=>公司于$?@!年推出的一套高性能&’()’*687

的数值计算和可视化软件,其全称是&’(<AB-’*;<’(;<C,亦即矩阵实验室。它集数值分析、矩阵运算、信号处理和图形显示于一

a

上海理工大学博士启动基金和国家自然科学基金(资助研究b??I@"8K)

$""!"""#$"计算机工程与应用

MATLAB与C_VisualC_混合编程的实现

然而%&’(&)自身所存在的某些缺点限制了它的应用范围。

(所以它的语言执行效率较$)%&’(&)是一种解释性语言,低,这对于实时性要求较高的领域,如自动控制、信号处理等,其实时效率是较差的。

因此它不能被用于(!)%&’(&)程序不能脱离其环境运行,开发商用软件。

程序可以被直接看到程序的源代码,因而不利于算法(*)

和数据的保密性。

可以在/01234&(/55中运用%+,-+.丰富的矩阵运算、绘图等功能。以下将看到,还有一种更为简便的方法实现%+,-+.和1/55的混合编程。

*#!利用%&’G<B实现%&’(&)与/55的混合编程

%&’E,<<(3公司推出的%&’G<B

MRN

(可于E’’L:00===#B&’EO

可以说是以上问题的最完美解决。它是第一’<<(3#G<B处获取)

个将%+,-+.的%文件转化到/55源程序的变换工具,它不但可将%文件转化为%>?文件、动态链接库文件,还能将既保持了%&’(&)%&’(&)的源代码译成同等功能的/55源代码。

的优良算法,又保持了/55的高执行效率。它完全可取代前述第一种混合编程方法。而1234&(%+,/S%使开发人员可以在目前流行的1/55T#"或1/55U#"的集成开发环境中完成%文件的编辑、编译、调试和运行。使用%+,/S%的集成开发环境不但可以对%文件进行编辑、调试、编译和连接成可%86>1+,

执行文件,还可以利用其提供的VW8(图形用户界面)进行程序界面制作,最后经一个优化器对代码进行优化处理,使代码质可以完全自动地将%文量更高。通过%86>1+集成开发环境,件编译、连接成可单独执行的>?>文件,使用非常方便。

在运用%&’G<B之前,首先应设置%&’G<B所对应的编译器类型、数据类型。在安装过程中,系统会让用户指定所使用的编译器类型和版本。现在%&’E,<<(3已推出%&’G<BR#T版本,其功能和使用方法都较以前的版本有很大的改进。软件安装并指定编译器后,编译、连接%文件的过程是完全自动化的。执行完成后,会生成一系列该项目的头文件、资源文件和/55源程序,同时生成可执行的>?>文件。用户可以在1/55开发环境中的适当位置插入转化的/55源程序,重新编译连接,也可以直接使用>?>文件。

下面用一个简单的三维绘图程序作为范例。

*%+,-+.与/01234&(/55语言混合编程的实现

为了充分利用%&’(&)的强大功能同时又能克服它的不

足,需要采用混合编程技术,即将%文件转化为可执行文件或。为此,有两种方法可以实现。动态链接库(6--文件)

*#$利用%+,-+.的+78标准实现混合编程

为扩充功能,%+,-+.提供了对/01234&(/55等语言的

即应用程序接口)。因此,+78标准(%+,-+.的一些工具可以协助语言编译器而形成92:;<=3下的动态链接库(文件。6--)为了生成6--文件,%+,-+.提供的/%>?#.+,是主要文件,它能自动调用所需工具对/语言进行处理,直接形成动态链接库,再/%>?#.+,实际上是通过特定语言编译器及链接器,加上自己的特有参数,最终生成可调用的动态链接库。

在/01234&(/55语言与%+,-+.语言的混合编程中,调用%+,-+.的内部函数,这种方法必须基于%+,-+.平台,由于%+,-+.的初始化完成后,便将一些系统数据加载到工作内存区,其中包括一些固有系统参数,以及一些内部函数,对一些常用的内部%+,-+.的操作是基于这些内部函数进行的。

命令可被%+,-+.直接翻译执行,而当需要解决一些比较繁琐的问题时,可使用%+,-+.的%文件或运用动态链接库

%&’(&)源程序:P4:G’2<:;CB<*;

;$!$)34)L(<’(

);34IP(LC&X3(!T);34)L(<’($!!));LG<(<I(LC&X3(!T)

经%&’G<BR#T翻译后的/55源程序如下:

6--文件。在/01234&(/55语言程序中调用的%+,-+.的内

部函数,必须先生成相应的动态链接库6--文件,否则此种方法无法实现。

由于%+,-+.只提供了对+@A8(美国国家标准协会)/的接口,所以/01234&(/55源程序必须满足+@A8/标准,并且)。其中必须包含头文件“BCD#E”以及主函数BCDF4:G’2<:()原型如下:BCDF4:G’2<:(

H<2;BCDF4:G’2<:(2:’:(E3,BD+II&JKL(E3MN,2:’:IE3,G<:3’

Y2:G(4;CZB&’(2)#EZ

YLI&[B&E;I3’<LY2:G(4;CZ;CB<*;#EZ

)\%B;CB<*;(

BD+II&JKLIE3MN)

其中:入口变量的个数;:(E3,:IE3分别为返回变量、L(E3MN、分别指向返回变量、入口变量的地址,LIE3MN为指针数组,BD+IO

)C[2:Q3G<LC

Y(2:C$Z;:0B&’G<BRT03&BL(C30B]P2(C30;CB<*;#BZG&((Q3’&GXQ)C[2:;

Y(2:C$Z;:0B&’G<BRT03&BL(C30B]P2(C30;CB<*;#BZ;<4)(C<(;Q:&I[2:^:&I[2:QH&(;2P_‘:&I[2:Q3C’a:&I[2:QH&(^"#";:&I[2:Q3C’^";

;<4)(C<(;Q:&I[<4’^:&I[<4’QH&(;2P(‘:&I[<4’Q3C’):&IO[<4’QH&(^"#";

:&I[<4’Q3C’^";

Y(2:C*Z;:0B&’G<BRT03&BL(C30B]P2(C30;CB<*;#BZY(2:CRZ;:0B&’G<BRT03&BL(C30B]P2(C30;CB<*;#BZ0B&’G<BRT03&BL(C30B]P2(C30;CB<*;#BZY(2:CTZ;:

(下转$"R页)

计算机工程与应用!"""#$"

I&J为BCD#E定义的%+,-+.下的矩阵类型。

为了在/01234&(/55源程序中调用%+,-+.函数,还必须在源程序中包含%+,-+.调用函数BCD/&((%+,-+.(),其原型如下:

CD’CI:2:’BCD/&((%+,-+.(

2:’:(E3,0K指明返回变量的个数K0BD+II&JKL(E3MN,2:’

:IE3,

BD+II&JKLIE3MN,G<:3’GE&I

);

0K返回变量的指针数组K00K指明入口变量的个数K00K入口变量的指针数组K0

0K要调用的函数名K0

KPG:Q:&BC

$"$

MATLAB与C_VisualC_混合编程的实现

3系统的开发环境

该课件的开发平台为Z’(,2^5?4,开发工具为O’5=/&U/_

(习题内容灵活多变,教师可以按自己和学生的需要修9)

改数据库,不断补充新的内容和完善课件。

最适用的Z’(,2^5应用程序OU是目前使用最为方便、5’14#"。

开发工具之一,之所以选择OU作为课件的开发工具,是因为它具有可视化设计、调试方便、简单易学的特点,更因为它具有良好的可扩充性,它可以调用Z’(,2^5系统函数(和其它L‘S)动态连接库(,为多媒体软件的开发提供了很大的帮助。[BB)

*结束语

随着计算机技术的发ALS是一种新型的现代化教学方式,

展,人工智能技术、专家系统运用于ALS系统将成为今后ALS的发展方向。笔者在这方面作了初步的偿试,并取得了一定的成果。但是作为一个具有智能的练习辅导系统的开发对个人而言是一项巨大且困难的工程,它需要各方面的专家的长期合作才可能实现。希望本系统的开发能够引起广大图学教育工作者及计算机工作者的兴趣,开发出更多更好的该类系统,使计算机图学教育更加普及和提高。(收稿日期:$???年?月)

4

利用多媒体计算机辅助教学自我练习测试具有如

下特点:

(丰富的表现形式7777有文字、图形、图象、动画、声音,$)

改变了传统意义上教学练习和测试枯燥单一的缺点。图、文、声的立体信息给教师的表达提供了更丰富的手段,而图、文、声并茂的习题内容使学生更易理解、接受和模仿,由于学生可以通过视听结合、手眼耳并用等多种方式与计算机交互作用、交流信息,因此能加深印象、提高学生的学习积极性和学习效率。

(有利于个别化教育———人机对话功能使学生具有参与!)

控制以增进学习和解决问题的能力,学生能根据自己的学习情况调整自己的学习顺序、学习内容和学习进度,计算机能及时提供反馈信息和适当的强化材料,特别适合于个别化教学。(上接$"$页)

参考文献

谢东等译#O’5=/&U/5’1开发多媒体应用程序#$#a美bHQ)D)&5C’等著,

清华大学出版社,$??:#9电子工业出版社,!#邓惠平编#多媒体编辑工具指南#北京:$??*#;(:9#刘传菊等#多媒体ALS专家系统#计算机工程与应用,$??:;$$)3$邱仲潘等译#O’5=/&U/5’14从入门到精3#a美bPE/(D)&25‘)0@2=0525著,通#北京:电子工业出版社,$??:#?

的强大功能很快开发出特定领域的专业商用软件。

%&’()*+,:-./012.34-5/.6&)5-.78’&)5-,).29,#.+

-./012.34-5/.6&)5-.78’&)5-,).29,#.+%&’():+,:

%&’();+,:-./012.34-5/.6&)5-.78’&)5-,).29,#.+

;<5=>6&20($!$#")

%&’()?+,:-./012.34-5/.6&)5-.78’&)5-,).29,#.+()));<5=@8(AB(6)/C5(!4#")%&’()$"+,:-./012.34-5/.6&)5-.78’&)5-,).29,#.+

;<5=>6&20($!!#")

%&’()$$+,:-./012.34-5/.6&)5-.78’&)5-,).29,#.+

()));AB(6)/C5(!4#")<612&2@(

1/&&<50/1C<)(,;(/@D’(<E/&F2&,<(/@D’(;(/@D2=0<E/&F2&,<(/@D2=0;@)0=@(G<H;

)(,<5126)I

生成的主程序如下:

图$三维曲面图示

3结束语

随着计算机和信息技术的不断发展,各行各业的科技人员

都需要利用计算机编程来解决特定领域的工程技术问题,而对于领域专家来说,将大量时间和精力耗费在编程调试的工作上显然是不值得的。因此,通过上述的混合编程,充分利用同时利用A-OAVV的HLMBLU的丰富的计算和图形处理功能,

高效快速,使得编程工作变得简单,科研人员可以把更多的时间和精力放在项目的关键问题的思考上,而不是放在算法的实现和程序编制中,这对于科研和工程技术人员都具有非常重要的现实意义。(收稿日期:!"""年3月)

%’(1&=,)+./0&’>#J+

%6@/D./J,@5026

%’(1&=,)+,).29,#J+

)K’(0./’((

>)D’(<5126)

;HLMANH<OPQRSNT)’(’0H(

);,).29,();)G’0H(@)0=@(";)(,<5126)I

所得三维曲面的图形如图$所示。

由此可见,采用H/012.来实现HLMBLU和OAVV的混合编程,这是一种时间、效率上极好的互补,它使得HLMBLU文件完全自动地转化为可执行的PWP文件,如同HLMBLU本身

参考文献

姜红#HLMBLU循序渐进#上海交通大学出版社,$#李胡锡,$??:

周云波,杨玉星等#HLMANH:!#林岚,HLMBLU与AVV结合的有效途径#微处理机,($???;!)

9#HLMBLU=5)@X5Y=’,)#H/0JZ2@C5,S(1#,$??;

3#HS[POL#HLMANH\O’5=/&HLMANH]5)@X5Y=’,)O3#4@)&7)/5)#H/0JM22&5B0,,$???

#$"3!"""#$"计算机工程与应用

本文来源:https://www.bwwdw.com/article/eyx1.html

Top