MATLAB与外部程序接口编程(MATLAB工程应用书库)
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,综合,
品牌: 张德丰
基本信息·出版社:机械工业出版社
·页码:368 页
·出版日期:2009年
·ISBN:7111257065/9787111257066
·条形码:9787111257066
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:MATLAB工程应用书库
产品信息有问题吗?请帮我们更新产品信息。
内容简介《MATLAB与外部程序接口编程》系统地介绍了MATLAB与外部程序的接口方法和技巧,重点介绍了MATLAB与各种高级语言之间的交互以及MATLAB提供的各种计算引擎和服务器引擎。书中给出了大量的MATLAB与高级语言结合的编程实例,可帮助读者更好地理解和掌握MATLAB应用程序接口的使用方法。通过MATLAB提供的串口接口,可以实现从外围设备(如MODEM)直接输入数据到MATLAB工作空间,再利用MATLAB进行处理。
《MATLAB与外部程序接口编程》可作为计算机、电子学、信息科学、通信、控制等专业的本科生、研究生以及其他专业技术人员学习MATLAB与外部程序接口技术的教材或参考书。
编辑推荐合理、完善的知识体系结构,内容丰富,重点突出,应用性强,免费提供相关程序源代码下载,深入、详细剖析MATLAB工程应用技术。
目录
前言
第1章 MATLAB外部接口概述 1
1.1 MATLAB系统简介 1
1.2 MATLAB常用的数据类型 2
1.2.1 数值阵列 2
1.2.2 字符阵列 4
1.2.3 元组阵列 5
1.2.4 结构体阵列 7
1.2.5 类和对象 9
1.3 MATLAB接口简介 10
1.3.1 MEX文件 10
1.3.2 MATLAB引擎 11
1.3.3 MATLAB C/C++数学函数库 11
1.3.4 MATLAB编译器 12
1.3.5 串口接口 13
第2章 MATLAB的MEX及MAT文件 14
2.1 C语言MEX 14
2.2 C-MEX混合编程 16
2.3 MEX文件的创立与调用 18
2.3.1 工程实例 18
2.3.2 编译器选项 21
2.3.3 脚本M文件向函数M文件的转化 22
2.3.4 MEX独立应用程序的发布 24
2.3.5 MEX的编程实例 25
2.4 FORTRAN语言的MEX文件 29
2.4.1 简单的FORTRAN语言MEX文件示例 29
2.4.2 传递字符串变量 31
2.4.3 在FORTRAN语言中调用MATLAB命令 33
2.5 操作MAT文件 35
2.5.1 MAT文件格式 35
2.5.2 操作MAT文件的MATLAB API 36
2.6 Visual C++调用MAT时的环境设置 39
2.7 MAT文件应用举例 40
第3章 MATLAB数值运算及数据的导入/导出 45
3.1 数值运算 45
3.1.1 矩阵的构造 45
3.1.2 矩阵的基本运算 48
3.1.3 矩阵的函数运算 50
3.1.4 矩阵分解 51
3.2 文本的打开和关闭 55
3.3 二进制数据 56
3.3.1 二进制数据的导入 56
3.3.2 二进制数据的导出 58
3.4 数据分析和统计 59
3.4.1 基本数据分析函数 59
3.4.2 协方差和相关系数函数 65
3.4.3 有限差分 66
3.5 使用文件I/O函数 67
3.5.1 二进制数据的读取 68
3.5.2 二进制数据的写入 69
3.5.3 逐行读取文本文件 69
3.5.4 格式化写入文本数据 70
3.6 稀疏矩阵 71
3.6.1 稀疏矩阵的创建和存储 71
3.6.2 查看稀疏矩阵 74
3.6.3 稀疏矩阵的运算 75
第4章 MATLAB编译器 77
4.1 MATLAB编译器简介 77
4.1.1 MATLAB编译器使用 77
4.1.2 编译M文件的原因 78
4.1.3 MATLAB编译器的局限性 79
4.2 mcc编译器典型应用 79
4.2.1 独立可执行文件 79
4.2.2 C动态链接库 84
4.2.3 C++动态链接库 85
4.2.4 C/C++动态链接库的不同之处 86
4.3 进一步了解mcc命令 87
4.3.1 mcc常用命令选项 87
4.3.2 捆绑命令文件 88
4.4 M文件与C/C++混合创立可独立运行的程序 88
4.5 控制代码生成 91
4.5.1 控制代码生成介绍 91
4.5.2 编译器生成的头文件 93
4.5.3 内部接口函数 95
4.5.4 编译器支持的可执行类型 98
4.5.5 M代码与C/C++代码的接口 102
4.6 MATLAB和C++接口中函数注册 103
4.7 综合实例 106
第5章 MATLAB引擎的混合编程 110
5.1 MATLAB引擎函数简介 110
5.2 MATLAB引擎函数库 111
5.3 在Visual C++中调用MATLAB引擎时的环境设置 116
5.4 MATLAB引擎类的封装 124
5.4.1 CMATLABEng类的定义和实现代码 124
5.4.2 CMATLABEng说明和使用方法 128
5.5 CMATLABEng应用实例 128
5.6 在Visual FORTRAN中使用MATLABEngine 131
第6章 MATLAB与C/C++语言的接口 136
6.1 MATLAB与C语言混合编程数据类型 136
6.1.1 MATLAB C语言接口中特殊的数据类型 136
6.1.2 size_t类型 138
6.2 MATLAB C语言接口数据类型 138
6.2.1 MATLAB普通数值阵列的操作 138
6.2.2 稀疏数组阵列 140
6.2.3 MATLAB结构体阵列 143
6.2.4 MATLAB元组 146
6.2.5 MATLAB字符阵列 148
6.3 MATLAB调用C 149
6.3.1 MEX文件接口 150
6.3.2 处理标量数据 150
6.3.3 处理字符串数据 152
6.3.4 处理稀疏矩阵 153
6.3.5 处理结构体和单元阵列 156
6.4 在C++中调用MATLAB C++数学库函数 159
6.4.1 MATLAB C++数学库函数介绍 159
6.4.2 对MATLAB阵列的操作 163
6.4.3 索引 172
6.4.4 基于I/O流的阵列输入 178
6.4.5 库函数调用 182
6.4.6 数学运算符的使用 186
6.5 MATLAB C++工具函数 189
第7章 MATLAB COM Builder与Visual C++ 192
7.1 COM基础知识 192
7.2 MATLAB COM Builder简介 193
7.3 COM Builder基础知识 193
7.3.1 配置MATLAB C/C++编译器 193
7.3.2 创建MATLAB COM Builder组件 194
7.3.3 MATLAB COM Builder工具库 197
7.3.4 在Visual C++中调用COM组件的步骤 198
7.4 MATLAB COM Builder与Visual C++之间的数据转换 199
7.4.1 VARIANT数据类型 199
7.4.2 SAFEAPPAY数据类型 201
7.4.3 SAFEAPPAY的创建函数 202
7.4.4 MATLAB COM Builder与Visual C++之间的数据转换 203
7.5 MATLAB COM Builder的枚举类型 207
7.6 综合实例 209
第8章 MATLAB与Java、Delphi接口编程 212
8.1 向MATLAB中引入Java类库 213
8.2 创建和使用Java对象 216
8.2.1 创建Java对象 216
8.2.2 Java对象的链接 217
8.2.3 存储和装载对象 218
8.2.4 使用Java对象 222
8.3 在MATLAB中使用Java数组 224
8.3.1 Java数组的创建 225
8.3.2 为Java数组赋值 226
8.3.3 访问Java数组元素 227
8.3.4 Java数组的引用和复制 229
8.3.5 Java数组的链接 230
8.4 向Java对象传递数据 231
8.5 处理Java方法调用返回的数据 235
8.6 综合实例 236
8.7 利用MATLAB引擎实例混合编程 245
8.7.1 动态链接库介绍 245
8.7.2 在Delphi中调用Visual C++创建的动态链接库的实例 245
8.7.3 MATLAB引擎动态链接库的设计 250
8.8 Delphi调用Mideva生成的动态链接库 254
8.8.1 Mideva介绍 254
8.8.2 应用实例 254
8.9 通过外部调用实现混合编程 259
8.9.1 外部调用方法介绍 259
8.9.2 应用实例 260
第9章 MATLAB与其他语言的混合编程 262
9.1 C++ Builder与MATLAB 262
9.1.1 Mideva软件平台 262
9.1.2 C++ Builder直接调用MATLAB函数 263
9.1.3 C++ Builder调用MATLAB工具箱函数转换后的DLL 264
9.1.4 C++ Builder与MATLAB混合编程的另一种实现 266
9.1.5 综合实例 268
9.2 MATLAB和Excel的混合编程 270
9.2.1 MATLAB和Excel的混合编程介绍 270
9.2.2 通过Excel Link实现Excel 和MATLAB的数据共享 270
9.2.3 通过Excel生成器 276
9.2.4 直接将MATLAB工作区间的数据复制到Excel 278
9.3 MATLAB与Visual Basic语言接口编程 279
9.3.1 DDE编程 279
9.3.2 MATLAB调用Visual Basic组件 281
9.3.3 Visual Basic调用MATLAB组件 289
9.3.4 综合实例 290
第10章 Matcom 292
10.1 Matcom的安装 292
10.2 编译独立的可执行程序 293
10.3 使用Matrix295
10.3.1 创建一个新的C++工程 295
10.3.2 初始化工作 296
10.3.3 函数调用 297
10.4 在Visual C++中使用Matcom C++矩阵库 299
10.5 使用Matcom C++矩阵库的矩阵类Mm 302
10.5.1 创建字符矩阵 302
10.5.2 创建数值矩阵 303
10.5.3 利用下标访问矩阵的元素 304
10.5.4 获取矩阵数据的指针 304
10.5.5 Mm矩阵对象的初始化 305
10.5.6 Matcom C++矩阵库常量 306
10.5.7 Mm矩阵类的几个常用函数 306
10.5.8 调用系统函数 308
10.6 Matcom用于图形显示的常用函数 310
10.7 Matcom C++矩阵库的图形和图像显示功能 310
10.8 Matcom进行图像显示的常用函数 312
10.9 Matcom应用实例 312
第11章 MATLAB与外设的数据交换及混合编程 318
11.1 串口接口 318
11.1.1 什么是MATLAB串口接口 318
11.1.2 什么是串口通信 318
11.1.3 串口接口标准 318
11.1.4 使用串口通信电缆连接两台设备 319
11.1.5 串口信号和针分配 320
11.1.6 串口数据格式 320
11.1.7 检测操作平台的串口信息 320
11.2 串口对象的建立 321
11.2.1 建立一个串口对象 321
11.2.2 连接到设备 323
11.2.3 配置通信参数 324
11.3 数据的读写 325
11.3.1 验证双通道示波器信息举例 325
11.3.2 控制对MATLAB命令行的访问 326
11.3.3 向串口设备写数据 326
11.3.4 从设备读入数据 328
11.4 事件和函数回调 331
11.4.1 回调函数应用举例 331
11.4.2 事件类型和回调属性 332
11.4.3 存储事件信息 333
11.4.4 建立和执行一个回调函数 333
11.5 记录数据到磁盘 334
11.5.1 记录数据的应用举例 335
11.5.2 创建多个记录文件 335
11.5.3 设定一个文件名 335
11.5.4 记录文件的格式 336
11.6 保存和装载数据 336
11.6.1 串口对象的读与写操作的举例 336
11.6.2 断开连接和清空工作空间 337
11.7 混合编程应用实例 338
11.7.1 数字图像处理 338
11.7.2 MATLAB图像处理工具箱 338
11.7.3 Visual C++的图像处理位图文件读/写操作 339
11.8 实例框架 341
11.8.1 框架搭建 341
11.8.2 模块划分 343
11.8.3 应用程序功能添加 356
11.9 混合编程的实现方法 360
11.9.1 图像形态学——MATLAB引擎数据交互实现 360
11.9.2 图像直方图统计——MATLAB引擎命令实现 363
参考文献 368
……[看更多目录]
序言正如FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作第四代计算机语言的MATLAB,利用其丰富的函数资源,能减轻编程人员的工作量。下面简单介绍一下MATLAB的主要特点。
◆ 语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用丰富的库函数可避开繁杂的子程序编程任务,压缩了一些编程工作量。由于库函数都由本领域的专家编写,均已通过检验。
a
◆ 运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
◆ MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。
◆ 程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。
◆ 程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
◆ MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。
◆ MATLAB的缺点是,程序的执行速度和其他高级程序相比较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
◆ 功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数,工具箱又分为功能性工具箱和学科性工具箱两类。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序。
◆ 源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改并加入自己的文件,构成新的工具箱。
作为目前市面上最为强大的科学计算软件,MATLAB实现了与众多外部程序或设备的接口。本书系统地介绍了MATLAB与外部程序的接口方法和技巧,重点介绍了MATLAB与各种高级语言之间的交互以及MATLAB提供的各种计算引擎和服务器引擎。书中给出了大量的MATLAB与高级语言结合的编程实例,使读者能够更好地理解和掌握MATLAB 应用程序接口的使用方法。
全书共分11章。第1章包括MATLAB系统简介、MATLAB常用的数据类型以及MATLAB接口简介等内容;第2章介绍了C-MEX混合编程、FORTRAN语言的MEX文件以及操作MAT文件等内容;第3章介绍了文件的打开和关闭、二进制数据以及使用文件I/O函数等内容;第4章介绍了mcc命令、M文件与C/C++混合创立可独立运行的程序以及MATLAB和C++接口中函数注册等内容;第5章介绍了在Visual C++中调用MATLAB引擎时的环境设置、CMATLABEng应用实例以及在Visual FORTRAN中使用MATLABEngine等内容;第6章介绍了MATLAB与C语言混合编程数据类型、MATLAB调用C在C++中调用MATLAB C++数学库函数等内容;第7章包括MATLAB COM Builder简介、MATLAB COM Builder与Visual C++之间的数据转换以及MATLAB COM Builder的枚举类型等内容;第8章介绍了向MATLAB中引入Java类库、创建和使用Java对象以及Delphi调用Mideva生成的动态链接库等内容;第9章介绍了C++ Builder与MATLAB、MATLAB和Excel的混合编程以及MATLAB与Visual Basic语言接口编程等内容;第10章介绍了使用Matrix、在Visual C++中使用Matcom C++矩阵库以及Matcom C++矩阵库的图形和图像显示功能等内容;第11章介绍了串口接口、数据的读写以及保存和装载数据等内容。
本书内容丰富、图文并茂、文字流畅,是一本学习和使用MATLAB与外部程序接口方法和技巧的有价值的参考书。
参加本书编写的人员有张德丰、许华兴、王旭宝、王孟群、邓恒奋、卢国伟、卢焕斌、伍志聪、庄文华、庄浩杰、许业成、何沛彬、何佩贤、张水兰、张坚、李勇杰、李秋兰、李美妍、陈运英、陈景棠、梁家科、黄达中、陈楚明、林健锋、梁劲强、林振满、周品等。
由于时间仓促,本书错误或疏漏之处在所难免,敬请读者批评指正。
文摘第1章 MA TLAB外部接口概述
MATLAB是当今世界上使用最为广泛的数学软件之一。它具有相当强大的数值计算、数据处理、系统分析、图形显示以及符号运算等功能,是一个完整的数学平台。在这个平台上,只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算的效率。另外,由于MATLAB的广泛使用,出现了为各个领域专门使用的工具箱(即在某一研究领域常用数学工具的函数包),这些工具箱的出现进一步促进了MATLAB的流行。
1.1 MATLAB系统简介
MATLAB是一种高效的科学计算软件,能将强大的计算功能、可视化和程序设计整合在一个极易使用的开发环境中。在该环境下,各种问题和计算都以数学的方式来表达。MATLAB的应用领域相当广泛,如:
●数学和计算。
●算法开发。
●获取数据。
●建模、仿真。
●数据分析和可视化编程。
●科学和工程作图。
MATLAB是一个交互式的操作系统,其基本数据元素为阵列,且阵列的维数没有限制,可以解决工程上的许多计算问题,尤其是那些带有矩阵和矢量的公式,而且使用起来相当简洁。这些问题若使用C或FORTRAN语言编程来实现,需要花费较长的时间。
MATLAB名称的本来含义是矩阵实验室(Matrix Laboratory),其创建的最初目的就是为了使繁琐的矩阵处理和运算变得容易。最初的MATLAB是用FORTRAN语言编写的,并且采用了当时极为流行的线性代数软件包LINPACK和基于特征值计算的软件包EISPACK中大量可靠的子程序。
插图: