第1章 Matlab开发环境和程序设计基础 1
1.1本章导读 1
1.2 Matlab环境 1
1.2.1命令行窗口 2
1.2.2代码编辑器 2
1.2.3工作空间窗口 4
1.2.4历史命令窗口 4
1.2.5利用Matlab环境的界面操作 5
1.2.6 Matlab帮助 8
1.2.7代码输入提示 8
1.3 Matlab语言基础 9
1.3.1 Matlab脚本文件 9
1.3.2 Matlab运算符与表达式 10
1.3.3 Matlab函数 13
1.3.4 Matlab的向量运算 15
1.3.5 Matlab的程序控制 18
1.3.6面向对象程序设计 22
1.4 Matlab常用的数据类型 26
1.4.1数值阵列 27
1.4.2字符阵列 29
1.4.3逻辑阵列 30
1.4.4元组阵列 31
1.4.5结构体阵列 33
1.4.6函数句柄阵列 35
1.5 Matlab常用数据显示函数 37
1.5.1 figure窗口 37
1.5.2绘制曲线 37
1.5.3显示图像数据 38
1.5.4显示三维曲面数据 39
第2章 Matlab编译器 41
2.1本章导读 41
2.2 Matlab编译器工作原理 41
2.3 Matlab编译器的发展历程 42
2.4使用Matlab编译器的准备工作 43
2.5 mcc编译器典型应用 44
2.5.1独立可执行文件 44
2.5.2 C动态链接库 53
2.5.3 C++动态链接库 55
2.5.4使用mwArray类 57
2.5.5 mwArray类操作详细说明 58
2.5.6 C/C++动态链接库的不同之处 63
2.6 mec命令选项、宏及捆绑命令文件 64
2.6.1 mec常用命令选项 64
2.6.2 mcc宏选项 65
2.6.3捆绑命令文件(bundle file) 66
2.7 Matlab编译器应用中的常见问题 66
2.7.1编译script文件 66
2.7.2 Matlab编译器关联分析失效的情况 67
2.7.3从C/C++中调用Matlab内置函数(built-in function) 69
2.7.4可变参数传递(varargin,varargout) 69
2.7.5 Matlab环境下执行和MCR执行的不同之处 71
2.7.6获取ctf文件的目录 71
2.7.7屏幕打印和错误信息显示函数 72
2.8 Matlab配置工具(Deployment Tool) 76
2.9程序发布 78
2.9.1 MCRInstaller.exe 78
2.9.2独立可执行程序发布需要附加的文件 78
2.9.3动态链接库发布需要附加的文件 79
第3章 Matlab与C/C++语言的接口 80
3.1本章导读 80
3.2 Matlab C/C++编译器的设置(MEX) 80
3.3 Matlab中调用C/C++程序-MEX文件 81
3.3.1 MEX文件用途 81
3.3.2 MEX文件与M文件的关系 82
3.3.3 MEX文件实例 82
3.3.4 MEX文件结构说明 83
3.3.5编译MEX文件 84
3.3.6采用C++创建MEX文件 84
3.4 Matlab与C语言混编常用的数据类型 85
3.4.1 size_t类型 85
3.4.2 Matlab C语言接口数据类型 86
3.5操作Matlab阵列mxArray的mx函数 88
3.5.1数值阵列操作函数 88
3.5.2字符串阵列操作函数 91
3.5.3逻辑型阵列操作 96
3.5.4稀疏矩阵操作函数 97
3.5.5结构体操作函数 99
3.5.6元组阵列操作函数 102
3.5.7类对象阵列属性操作函数 103
3.5.8内存操作函数 106
3.5.9索引、维数和元素个数操作函数 110
3.5.10 Is函数 112
3.5.11其他操作函数 114
3.6 MEX文件专用的mex函数 116
3.6.1工作区变量操作 116
3.6.2输出警告和错误信息 122
3.6.3调用Matlab函数和执行Matlab语句 123
3.6.4操作MEX文件 126
3.7 Matlab阵列的操作方法与实例 129
3.7.1 Matlab普通数值阵列 129
3.7.2稀疏数组阵列(Sparse Array) 131
3.7.3 Matlab字符阵列 134
3.7.4 Matlab元组 135
3.7.5 Matlab结构体阵列 138
3.7.6更改Matlab数值阵列的维数 141
3.7.7分析并显示Matlab阵列的内容 144
3.8操作Matlab MAT文件的API函数 154
3.9 Matlab MAT文件操作方法 161
3.9.1向MAT文件中写入mxArray变量 161
3.9.2从MAT文件中读取mxArray变量 164
3.9.3同时操作MAT文件与Matlab阵列 167
3.10在Visual C++中调试MEX文件 174
3.10.1利用 VC++6.0调试MEX文件 174
3.10.2利用VC++2010调试MEX文件 178
第4章 生成可独立运行的Matlab程序 181
4.1本章导读 181
4.2 Matlab编译可独立执行程序 181
4.2.1直接编译m文件 181
4.2.2 Matlab M文件中调用C/C++函数 182
4.2.3在C/C++语言调用由Matlab *.m文件生成的函数 184
4.2.4利用VC++编译m文件接口函数,并去掉控制台窗口 190
第5章 C/C++通过引擎和动态链接库调用Matlab程序 220
5.1本章导读 220
5.2在VC++中调用Matlab引擎 220
5.2.1 API函数介绍 220
5.2.2 VC调用Matlab引擎的实例 221
5.3 VC++中调用Matlab *.m函数编译后的动态链接库 229
第6章 C/C++通过COM组件调用Matlab程序 241
6.1本章导读 241
6.2 COM基础知识 241
6.2.1 COM组件概述 241
6.2.2 COM组件开发的基础知识 242
6.3 Matlab编译COM组件基础知识 247
6.3.1配置Matlab C/C++编译器 247
6.3.2使用Matlab DeploymentTool 248
6.3.3实现COM组件的方法 249
6.3.4实现COM组件的属性 249
6.3.5编译COM组件 250
6.4 C/C++调用DeplomentTool生成的组件 250
6.5 Matlab COM组件与C/C++之间的数据转换 258
6.5.1 VARIANT数据类型 258
6.5.2 COleVariant和_variant_t 260
6.5.3 SAFEARRAY数据类型 260
6.5.4 SAFEARRAY创建函数 261
6.5.5 Matlab数据类型的VARIANT类型表示 262
6.5.6 VARIANT变量和Matlab阵列的转换规则 263
6.5.7阵列格式标志(Array Formatting Flags) 265
6.5.8数据转换标志(Data Conversion Flags) 266
6.6 Matlab COM工具库 267
6.6.1简介 267
6.6.2 MWUtil 267
6.6.3 MWFlags 268
6.6.4 MWStruct类 269
6.6.5 MWField类 271
6.6.6 MWComplex类 272
6.6.7 MWSparse类 272
6.6.8 MWArg类 273
6.6.9 Matlab MWComUtil的枚举类型 273
6.7安装和发布Matlab COM组件 275
6.8综合实例 276
6.8.1实例1—数据转换及数组格式标志的使用 276
6.8.2实例2—采用MWUtil处理varargin输入、varargout输出 279
6.8.3实例3—MWStruct和MWField操作实例 282
6.8.4实例4—MWComplex操作实例 291
6.8.5实例5—MWSParse操作实例 294
第7章 C/C++调用Matcom数学库 297
7.1本章导读 297
7.2 Matcom与Matlab 297
7.3安装Matcom 297
7.4在Visual C++中使用Matcom C++矩阵库 299
7.5使用Matcom Matrix C++矩阵库的矩阵类Mm 304
7.5.1创建数值矩阵 304
7.5.2创建字符矩阵 305
7.5.3利用下标访问矩阵的元素 305
7.5.4获取矩阵数据的指针 306
7.5.5 Mm矩阵对象的初始化 307
7.5.6 Mm矩阵类的几个常用函数 307
7.5.7 Matcom C++矩阵库常量 309
7.5.8调用系统函数 310
7.6 Matcom矩阵库的图形和图像显示功能 311
7.7 Matcom用于图形显示的常用函数 313
7.8 Matcom进行图像显示的常用函数 314
7.9 Matcom的应用实例 314
7.9.1实例1—Matcom Mm矩阵的创建及使用 314
7.9.2实例2—图形绘制的基本功能演示 318
7.9.3实例3—利用 Matcom绘制动态曲线 323
7.9.4实例4—Matcom进行图像显示 335
7.9.5实例5—Matcom二维和三维曲线绘制综合应用 346
第8章 C/C++调用Matlab C++数学库 360
8.1本章导读 360
8.2 Matlab C++数学库 360
8.3在Visual C++工程中调用Matlab C++数学库 360
8.4 Matlab C++数学库的使用 362
8.4.1输入/输出矩阵 362
8.4.2操作Matlab mwArray阵列 367
附录 动态链接库基础知识 394
A.1为什么使用动态链接库? 394
A.2 C/C++语言实现动态链接库 395
A.3 C/C++语言动态链接库的不同 397
A.4动态链接库的调用方式 398
A.4.1隐式链接 398
A.4.2显式链接 399