第1章 混合编程环境的搭建 1
1.1 MATLAB与C/C++混合编程的优点 1
1.1.1 MATLAB编程的优缺点 1
1.1.2 C/C++编程的优缺点 1
1.1.3混合编程的优缺点 2
1.2混合编程主要方法概述 3
1.2.1 Visual C++调用MATLAB引擎 3
1.2.2基于数据文件交换的方法 3
1.2.3基于COM技术的方法 4
1.2.4使用MATCOM方法 4
1.2.5基于ActiveX控件的方法 4
1.2.6使用MATLAB Add-in方法 5
1.3 Visual C++和MATLAB混合编程环境要求 5
1.4 Visual C++的安装和配置 5
1.4.1 Visual C++ 6.0的安装 5
1.4.2 Visual C++的配置 8
1.5 MATLAB的安装和配置 11
1.5.1 MATLAB的安装 11
1.5.2 MATLAB的配置 13
1.6安装和配置的常见问题 15
1.6.1 Visual C++的安装和配置问题 15
1.6.2 MATLAB的安装和配置问题 16
1.7小结 18
第2章Visual C++开发基础 19
2.1 C++面向对象程序设计 19
2.1.1面向对象语言和方法 19
2.1.2类、对象和消息 20
2.2 C++异常处理机制 21
2.2.1错误和异常 22
2.2.2异常处理的机制和实现 22
2.2.3 Visual C++异常处理 26
2.3 Windows程序内部运行机制 28
2.3.1 API与SDK 28
2.3.2窗口与句柄 29
2.3.3消息与消息队列 29
2.4动态链接库基础 30
2.4.1 DLL与进程的地址空间 30
2.4.2 DLL分类 31
2.4.3创建DLL模块 32
2.5 Visual C++程序编译链接的原理与过程 34
2.5.1程序设计编译原理 34
2.5.2 Visual C++程序编译链接过程 34
2.6 MFC框架程序 36
2.6.1 MFC AppWizard 36
2.6.2基于MFC的程序框架剖析 37
2.7 ActiveX控件 42
2.7.1概述 42
2.7.2 ActiveX控件分类 43
2.7.3 ActiveX控件应用 43
2.8 Visual C++程序的调试和优化 43
2.8.1 Visual C++程序调试方法和过程 43
2.8.2 Visual C++程序优化 46
2.9小结 48
第3章MATLAB编程基础 49
3.1 MATLAB程序流程控制 49
3.1.1顺序结构 49
3.1.2循环结构 50
3.1.3选择结构 51
3.1.4分支语句 52
3.1.5其他控制语句 52
3.2函数句柄 53
3.2.1创建和查看函数句柄 53
3.2.2使用函数句柄 54
3.3变量的检测和限权使用函数 54
3.3.1输入/输出变量检测指令 54
3.3.2跨空间变量传递 55
3.3.3子函数和私用函数 56
3.4串(表达式)演算函数 56
3.4.1 eval 56
3.4.2 feval 57
3.5 MATLAB面向对象编程 57
3.5.1 MATLAB中的类 57
3.5.2具有类属性的数据 58
3.5.3实现带类方法的操作 59
3.6 MATLAB的数据类型 60
3.6.1变量与常量 60
3.6.2数字变量的运算及显示格式 62
3.6.3字符串 63
3.7 M脚本文件和M函数文件 63
3.7.1 M文件的一般结构 64
3.7.2 M脚本文件 64
3.7.3 M函数文件 65
3.7.4局部变量和全局变 66
3.8 MATLAB程序的调试和优化 66
3.8.1 MATLAB程序调试方法和过程 67
3.8.2 MATLAB程序优化 72
3.9小结 73
第4章Visual C++调用MATLAB Engine库 74
4.1 MATLAB Engine概述 74
4.2 Visual C++使用MATLAB Engine库 75
4.2.1设置Visual C++编译环境 75
4.2.2启动/关闭引擎 76
4.2.3向MATLAB发送命令 77
4.2.4显示或隐藏MATLAB窗口 79
4.3 MATLAB数据类型mxArray 80
4.3.1创建mxArray类型数据 80
4.3.2删除mxArray类型数据 81
4.3.3获取mxArray数据大小 81
4.3.4判断mxArray数组类型 81
4.3.5操作mxArray数组数据 82
4.4应用实例 82
4.5小结 88
第5章Visual C++调用MATLAB的C/C++数学函数库 89
5.1 MATLAB C++数学库概述 89
5.2在Visual C++环境下调用MATLAB C++数学库 90
5.2.1设置静态链接库 90
5.2.2设置C++选项卡中的选项 91
5.2.3设置头文件 92
5.3 mwArray阵列及系统函数的调用 93
5.3.1操作矩阵 93
5.3.2操作MATLAB mwArray阵列概述 94
5.3.3创建MATLAB mwArray阵列的操作 94
5.3.4数据阵列的操作 95
5.3.5稀疏矩阵阵列的操作 96
5.3.6字符型阵列的操作 97
5.3.7单元阵列的操作 99
5.3.8结构体阵列的操作 100
5.3.9调用系统函数 101
5.4应用实例 102
5.5小结 107
第6章 基于数据文件交换的混合编程方法 108
6.1 MAT文件概述 108
6.1.1 MAT文件格式 108
6.1.2读取MAT文件load 110
6.1.3写MAT文件 111
6.2 Visual C++操作MAT时的环境设置 112
6.3用C/C++语言操作MAT文件的API函数 114
6.3.1读写MAT文件的API函数简介 114
6.3.2打开MAT.文件 115
6.3.3关闭MAT.文件 115
6.3.4获得MAT文件中所有阵列的目录 116
6.3.5获得MAT文件的C语言文件句柄 116
6.3.6从MAT文件中获取一个阵列变 116
6.3.7将阵列变量内容写入MAT文件 117
6.3.8获得MAT文件中下一个阵列的数据 117
6.3.9从MAT文件中删除一个阵列 118
6.3.10将阵列内容写入到MAT文件中 118
6.3.11从MAT文件中读取MATLAB阵列头信息 118
6.3.12从MAT文件中读取下一个MATLAB阵列头信息 118
6.4应用实例 119
6.4.1环境设置 119
6.4.2在MATLAB中定义两个变量 120
6.4.3建立Visual C++工程 120
6.5小结 126
第7章 基于COM技术的方法实现混合编程 127
7.1 COM技术概述 127
7.1.1 COM结构 127
7.1.2 COM组件的有关概念 129
7.1.3 COM特性 131
7.1.4 COM发展前景 132
7.2 COM技术接口 132
7.2.1从API到COM接口 132
7.2.2接口定义和标示 133
7.2.3用C++语言定义接口 135
7.2.4接口描述语言IDL 135
7.3使用MATLAB COM编译器生成COM组件 136
7.3.1 MATLAB COM编译器用法 136
7.3.2 MATLAB COM编译器产生的COM组件 141
7.4在Visual C++中使用MATLAB的COM组件 142
7.4.1以早期绑定方式调用COM组件 143
7.4.2 #import指令的使用 143
7.5应用实例 144
7.5.1创建MATLAB组件 144
7.5.2创建Visual C++工程 145
7.5.3完善代码 147
7.6小结 151
第8章 使用MATCOM工具的混合编程 152
8.1安装MATCOM 152
8.2 MATCOM的基础及应用 154
8.2.1使用MATCOM C++矩阵库的矩阵类Mm 154
8.2.2在Visual C++中使用MATCOM C++矩阵库 157
8.2.3 MATCOM C++矩阵库的图形和图像显示 161
8.2.4 MATCOM用于图形显示的函数 163
8.2.5 MATCOM用于图像显示的函数 164
8.3 MIDEVA概述 164
8.4 Visual C++使用MIDEVA的环境设置 165
8.4.1添加头文件和添加库文件 165
8.4.2添加MIDEVA提供的插件 166
8.5应用实例 166
8.6小结 169
第9章 使用ActiveX技术的混合编程 170
9.1 ActiveX技术基础 170
9.1.1 ActiveX的定义 170
9.1.2 ActiveX的内容 171
9.1.3 MATLAB支持的ActiveX技术 171
9.2利用ActiveX自动控制器实现混合编程 172
9.2.1 ActiveX自动控制器 172
9.2.2 ActiveX相关函数 173
9.2.3 ActiveX对象的创建、事件处理与对象释放 174
9.2.4查询和设置ActiveX对象的属性 176
9.2.5查询及调用ActiveX组件的方法、事件 177
9.3 ActiveX自动化服务器 177
9.3.1在客户程序中执行MATLAB命令 178
9.3.2与客户程序进行数据交换 178
9.4应用实例 179
9.4.1利用ActiveX自动控制器实现混合编程 179
9.4.2利用ActiveX的自动化服务器进行混合编程 181
9.4.3利用MATLAB ActiveX引擎进行混合编程 183
9.5小结 185
第10章 科学运算 186
10.1科学运算概述 186
10.2混合编程在科学运算的开发原则 186
10.2.1 Visual C++处理科学运算问题的优缺点 187
10.2.2 MATLAB处理科学运算的优缺点 187
10.2.3混合编程在科学运算的开发原则 187
10.3 Visual C++和MATLAB在科学运算中的衔接方式 188
10.3.1 MATLAB与Visual C++混合编程实现方法 188
10.3.2 MATCOM编译器 188
10.4线性方程组求解 189
10.4.1 MATLAB求解 190
10.4.2 Visual C++求解 193
10.4.3 Visual C++和MATLAB混合编程对线性方程组求解 204
10.5编程方式不同的对比 207
10.6小结 207
第11章 图形图像显示 208
11.1 Visual C++和MATLAB图形图像处理混合编程原则 208
11.2 Visual C++的图形图像处理及接口设计 208
11.2.1 Visual C++的图像处理方法 208
11.2.2 Visual C++图形处理方法 212
11.2.3 Visual C++和MATLAB图形图像处理的接口设计 212
11.3 MATLAB图像处理基础 213
11.3.1显示图像 213
11.3.2查看内存中的图像 214
11.3.3图像灰度分布直方图均衡化 214
11.3.4图像文件的保存 215
11.3.5查看新生成文件的内容 215
11.4图像格式与MATLAB图像类型 216
11.4.1常用图像格式 216
11.4.2 MATLAB图像类型 218
11.4.3 MATLAB图像类型转换 219
11.5 MATLAB图像显示命令 222
11.5.1 MATLAB图像的读/写和显示 222
11.5.2二进制图像的显示方法 223
11.5.3灰度图像的显示方法 223
11.5.4索引图像的显示方法 224
11.5.5 RGB图像的显示方法 224
11.5.6磁盘图像的直接显示 224
11.6 MATLAB图形显示命令 225
11.7 Visual C++和MATLAB图形图像处理应用实例 225
11.7.1 Visual C++中调用MATLAB函数画图 225
11.7.2利用MATCOM绘制动态曲线 228
11.7.3二维和三维曲线绘制综合应用 231
11.8小结 244
第12章 图像识别 245
12.1图像识别的混合编程规则和接口设计 245
12.1.1 Visual C++和MATLAB图像识别的混合编程原则 245
12.1.2 Visual C++和MATLAB图像识别的接口设计 245
12.2图像识别概述 246
12.2.1图像识别的发展阶段 246
12.2.2图像识别的基础 247
12.2.3图像识别原理 247
12.3主要图像识别方法 248
12.3.1统计模式的识别方法 248
12.3.2结构语句的识别方法 248
12.3.3模糊集识别法 249
12.3.4神经网络识别法 249
12.4图像识别的应用 249
12.4.1图像预处理 250
12.4.2图像分割 253
12.4.3图像识别 254
12.5图像识别应用综合实例 260
12.5.1新建图像识别M文件 260
12.5.2在MATLAB下创建COM组件 264
12.5.3 Visual C++单击工程中调用COM组件 267
12.5小结 269
第13章 控制系统模型输入和分析 270
13.1 MATLAB控制系统工具箱 270
13.1.1 Simulink 270
13.1.2其他解决控制领域问题的工具箱 271
13.2控制系统模型输入和分析的混合编程原则及接口设计 271
13.3控制系统模型的输入 273
13.3.1传递函数模型的输入 273
13.3.2零极点增益模型的输入 276
13.3.3状态空间模型的输入 278
13.3.4系统不同模型之间的转换 279
13.4控制系统的分析 283
13.4.1系统的时域分析 283
13.4.2系统的根轨迹分析 285
13.4.3系统的频域分析 287
13.4.4系统的稳定性分析 290
13.5基于Visual C++和MATLAB的控制系统模型输入和分析 291
13.5.1 Visual C++界面设计 292
13.5.2 Visual C++调用MATLAB引擎实现的关键技术 292
13.5.3运行结果 296
13.6小结 297
第14章 控制系统的设计仿真 298
14.1控制系统校正器原理 298
14.1.1串联校正 298
14.1.2反馈校正 300
14.1.3复合校正 301
14.2控制系统校正器设计和仿真 302
14.2.1超前校正设计 302
14.2.2滞后校正设计 305
14.2.3滞后-超前校正设计 307
14.2.4 PID校正器 308
14.3基于Visual C++和MATLAB的控制系统校正器设计 311
14.3.1控制系统校正器的实现方式 311
14.3.2控制系统分析界面设计 312
14.3.3代码实现 313
14.3.4运行结果 315
14.4小结 317
第15章 信号频谱分析 318
15.1信号频谱分析的混合编程规则和接口设计 318
15.1.1 Visual C++和MATLAB信号频谱分析的混合编程原则 318
15.1.2 Visual C++和MATLAB信号频谱分析的接口设计 318
15.2信号频谱分析的基本概念 319
15.2.1周期信号与离散光谱的定义 319
15.2.2信号频谱分析和显示原理 320
15.3信号FFT频谱分析 321
15.3.1数据采样 321
15.3.2采样数据导入MATLAB 322
15.3.3对采样数据进行频谱分析 323
15.4 MATLAB频谱分析函数 324
15.5 Visual C++开发信号FFT频谱分析与显示结果 326
15.5.1新建M文件 326
15.5.2创建COM组件 327
15.5.3 Visual C++单击工程中调用COM组件 330
15.5.4信号FFT实践及频谱分析 332
15.6小结 340
第16章 数据采集和分析 341
16.1信号和信号处理 341
16.2数据采集和分析处理的混合编程原则 341
16.3 Visual C++的数据采集和分析及接口设计 343
16.3.1监控程序中的数据实时采集 343
16.3.2基于MSComm控件的串口通信 344
16.4信号的采集原理 346
16.4.1采样定理 346
16.4.2信号的产生 347
16.4.3连续时间信号在MATLAB中的运算 353
16.4.4连续时间LTI系统的时域分析 354
16.5小波理论在信号分析中的应用 356
16.5.1小波分析原理 356
16.5.2小波在语音信号增强中的应用 357
16.5.3小波在语音信号压缩中的应用 358
16.6混合编程实例 359
16.6.1使用Visual C++和MATLAB混合编程的方式绘制sinc函数波形 359
16.6.2数据传输和小波分析示例程序 362
16.7小结 365
第17章Visual C++和MATLAB开发齿轮优化设计系统 366
17.1优化设计理论 366
17.2 MATLAB优化设计工具箱 367
17.2.1优化工具箱简介 367
17.2.2优化工具箱4.x的新特色 368
17.2.3优化函数 368
17.2.4无约束优化问题 370
17.2.5约束优化问题 373
17.3 Visual C++与绘图软件SolidWorks的接口 376
17.3.1 SolidWorks的API接口概述 376
17.3.2对象分类 376
17.3.3几个重要的SolidWorks API对象 378
17.3.4使用Visual C++对SolidWorks的二次开发 379
17.4齿轮优化设计系统概述 379
17.4.1齿轮优化设计系统需求 379
17.4.2齿轮优化设计系统设计 380
17.5齿轮优化设计系统开发 380
17.5.1齿轮优化设计的MATLAB实现 380
17.5.2 SolidWorks环境内的Visual C++和MATLAB混合编程 385
17.5.3齿轮优化设计系统运行 397
17.6小结 398
第18章 基于Visual C++和MATLAB的汽车ABS系统仿真 399
18.1汽车ABS系统工作原理 399
18.2 MATLA13中建立仿真模型 399
18.2.1 Simulink建立模型 399
18.2.2 Simulink模型运行及分析 400
18.2.3仿真数据的输入输出设置 400
18.2.4解算器(Solver)的设置 400
18.2.5 Simulink模块的合成与封装 401
18.3建立汽车ABS仿真模型 401
18.3.1汽车ABS系统数学模型 402
18.3.2建立和运行汽车ABS系统仿真模型 403
18.4混合仿真过程 406
18.5小结 409
参考文献 410