第1章 Matlab程序设计初步 1
1.1 Matlab程序设计特点 1
1.1.1 Matlab Script文件 1
1.1.2 Matlab表达式 2
1.1.3 Matlab函数 4
1.1.4 Matlab的向量运算 6
1.1.5 Matlab的程序控制 9
1.2 Matlab常用的数据类型 12
1.2.1 数值阵列 13
1.2.2 字符阵列 15
1.2.3 元组阵列 16
1.2.4 结构体阵列 18
第2章 Matlab编译器 21
2.1 Matlab编译器技术概述 21
2.2 Matlab编译器的功能 22
2.3 使用Matlab编译器的准备工作 23
2.4 mcc编译器典型应用 24
2.4.1 独立可执行文件 24
2.4.2 C动态链接库 30
2.4.3 C++动态链接库 32
2.4.4 C/C++动态链接库的不同之处 33
2.5 进一步了解mcc命令 34
2.5.1 mcc常用命令选项 34
2.5.2 捆绑命令文件(bundle file) 35
2.6 Matlab编译器高级应用 35
2.6.1 编译script文件 35
2.6.2 Matlab编译器关联分析失效的情况 36
2.6.3 从C/C++中调用Matlab内置函数(built-in function) 38
2.6.4 可变参数传递(varargin,varargout) 38
2.6.5 Matlab环境下执行和MCR执行的不同之处 39
2.6.6 获取CTF文件的目录 40
2.6.7 屏幕打印和错误信息显示函数 41
2.7 Deployment Tool 45
2.8 程序发布 47
第3章 Matlab与C语言的接口 48
3.1 Matlab C/C++编译器的设置(mex) 48
3.2 Matlab中调用C程序-MEX文件 49
3.2.1 MEX文件介绍 49
3.2.2 MEX文件结构说明 50
3.3 编译MEX文件 51
3.4 Matlab中mxArray类型的操作 51
3.5 Matlab与C语言混合编程常用的数据类型 51
3.5.1 size_t类型 51
3.5.2 Matlab C语言接口数据类型 52
3.6 操作Matlab阵列mxArray的mx函数 54
3.7 Matlab mex函数 77
3.8 Matlab普通数值阵列的操作 87
3.9 稀疏数组阵列(Sparse Array) 89
3.10 Matlab元组 92
3.11 Matlab结构体阵列 94
3.12 Matlab字符阵列 97
3.13 Matlab mat API函数 98
3.14 Matlab API函数操作的实例 105
3.14.1 更改Matlab数值阵列的维数 105
3.14.2 分析并显示Matlab阵列的内容 108
3.14.3 向MAT文件中写入mxArray变量 118
3.14.4 从MAT文件中读取mxArray变量 121
3.14.5 通讯录(结构体和MAT文件) 125
3.15 在Visual C++中调试MEX文件 131
第4章 生成可独立运行的Matlab程序 138
4.1 直接编译M文件 138
4.2 Matlab M文件中调用C函数 138
4.3 在C语言中调用由Matlab*.m文件生成的函数 141
4.4 利用Visual C++编译M文件并去掉控制台窗口 145
第5章 Visual C++调用Matlab程序 177
5.1 在Visual C++中调用Matlab引擎 177
5.1.1 API函数介绍 177
5.1.2 Visual C++调用Matlab引擎的实例 178
5.2 Visual C++中调用Matlab*.m函数编译后的动态链接库 186
第6章 Matlab Dotnet Builder与Visual C++ 198
6.1 COM基础知识 198
6.1.1 COM组件概述 198
6.1.2 COM组件开发的基础知识 199
6.2 DotnetBuilder基础知识 204
6.2.1 配置Matlab C/C++编译器 204
6.2.2 使用Matlab DotnetBuilder 204
6.3 Visual C调用DotnetBuilder生成的组件 207
6.4 Matlab Dotnet Builder与Visual C++之间的数据转换 218
6.4.1 VARIANT数据类型 218
6.4.2 SAFEARRAY数据类型 220
6.4.3 SAFEARRAY的创建函数 221
6.4.4 Matlab Dotnet Builder与Visual C++数据转换 222
6.5 Matlab COM工具库 227
6.5.1 简介 227
6.5.2 工具库的类(utility library classes) 227
6.5.3 Matlab Dotnet Builder的枚举类型 233
6.5.4 安装和发布控件 234
6.6 综合实例 235
6.6.1 实例1 数据转换及数组格式标志的使用 235
6.6.2 实例2 采用MWUtil处理varargin输入和varargout输出 238
6.6.3 实例3 MWStruct和MWField操作实例 241
6.6.4 实例4 MWComplex操作实例 250
6.6.5 实例5 MWSParse操作实例 253
第7章 Matcom与C/C++ 257
7.1 安装Matcom 257
7.2 在VC++中使用Matcom C++矩阵库 259
7.3 使用Matcom C++矩阵库的矩阵类Mm 264
7.3.1 创建数值矩阵 264
7.3.2 创建字符矩阵 265
7.3.3 利用下标访问矩阵的元素 265
7.3.4 获取矩阵数据的指针 266
7.3.5 Mm矩阵对象的初始化 267
7.3.6 Mm矩阵类的几个常用函数 267
7.3.7 Matcom C++矩阵库常量 269
7.3.8 调用系统函数 270
7.4 Matcom C++矩阵库的图形和图像显示功能 271
7.5 Matcom用于图形显示的常用函数 273
7.6 Matcom进行图像显示的常用函数 273
7.7 Matcom的应用实例 274
7.7.1 实例1 Mm矩阵的创建及使用 274
7.7.2 实例2 图形绘制的基本功能演示 278
7.7.3 实例3 利用Matcom绘制动态曲线 282
7.7.4 实例4 利用Matcom C++矩阵库进行图像显示 293
7.7.5 实例5 Matcom二维和三维曲线绘制综合应用 303
第8章 Visual C++调用Matlab C++数学库 316
8.1 Matlab C++数学库介绍 316
8.2 在Visual C++工程中调用Matlab C++数学库 316
8.3 Matlab C++数学库的使用 318
8.3.1 输入和输出矩阵 318
8.3.2 操作Matlab mwArray阵列 322
8.3.3 调用系统函数 341
附录 动态链接库基础知识 344
A.1 为什么使用动态链接库? 344
A.2 C/C++语言实现动态链接库 345
A.3 C/C++语言动态链接库的不同 348
A.4 动态链接库的调用方式 348
A.4.1 隐式链接 348
A.4.2 显式链接 350
参考文献 353