Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9727575
  • 博文数量: 1227
  • 博客积分: 10026
  • 博客等级: 上将
  • 技术积分: 20273
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-16 12:40
文章分类

全部博文(1227)

文章存档

2010年(1)

2008年(1226)

我的朋友

分类: C/C++

2008-04-23 22:00:07

浅析VC与MATLAB联合编程<四>

作者:


  在浅析VC与MATLAB联合编程<一>浅析VC与MATLAB联合编程<二>浅析VC与MATLAB联合编程<三>中简单介绍了VC和MATLAB接口的两种方法,初学者可能会问为什么要用VC和MATLAB接口,接口的实质又是什么,本文就通过一个例子来回答这两个问题。
   首先来介绍一下MATLAB。 MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。
  经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。
  MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。
MATLAB已经成为目前国际上最流行、应用最广泛的科学工程计算软件,它广泛的应用于自动控制、数学运算、信号分析、图象处理、财务分析等各行各业。由于它具有强大的计算和绘图功能、大量稳定可靠的算法库和简洁高效的编程语言,已成为数学计算工具方面事实上的标准。
   在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。
  在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上(尤其是信息科学刊物)都可以看到MATLAB的应用。 在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都接受MATLAB的支持。

为了说明问题,我们举个例子: 解下列线形方程组:(如图1):


图1

用C语言(VC环境中)编写的代码为:(图2)


图2

编译、连接,运行结果为:(图3):


图3

而该方程在MATLAB中只需要一个命令“\”就可以解决:
在MATLAB中建立一个新的m文件,在MATLAB菜单中:File->New->M file(如图4):


图4

在M文件中输入代码,并保存为QJFCZ.m。(如图5)


图5

在MATLAB Command命令窗口中输入以下命令:
>> QJFCZ
然后回车,结果如下:
x =

-0.1429
2.7857
0
>>

  可以看出用MATLAB写出的代码十分简单,对于上面的方程,如果矩阵A和b的维数发生变化的话, C代码还要重新编写,而用MATLAB书写的代码几乎不用改动,只需改变数据即可。
   如果现在我们用VC编写的一个软件,其中要求解有5个未知数的线形方程组,如果用C\C 语言来写程序的话其编程量是很大的, 如果在C\C 语言中能用MATLAB那么简单的代码来实现该功能就可以大大减少工作量,VC和MATLAB接口就是做这个工作的。 MATLAB中提供了大量用C\C 重新编写的MATLAB库函数,包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、 特殊数学函数、插值函数等等,还可以利用MATLAB的编译工具将m文件方便的转化为C\C 语言、可执行程序(exe)、动态连接库文件(dll)、COM组 件等等,并可直接供C\C 语言调用,利用VC和MATLAB接口技术可以在VC中充分发挥MATLAB的数值计算功能,并且可以不依赖MATLAB软件运行,我们在编写程序时,可以在VC下做出很漂亮的界面,而把复杂的数值处理交给MATLAB去做(实际上MATLAB也能做界面GUI(Graphic User Interface),而且做出的界面我认为 并不比VC逊色,但是需要MATLAB软件作为后台运行,如果不依赖MATLAB软件运行的话,可以在VC中调用GUI),然后通过接口技术将MATLAB集 成到VC中,这样可以大大减轻编程的负担,并减少程序编写时间。
   事实上正是由于MATLAB数值计算功能的强大,MATLAB与许多程序都有接口,例如Fortran、VB、Java、SPSS(一个著名的统 计软件)、Excel、Word等,其实质也是通过接口在程序中调用MATLAB的功能。

阅读(369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~