《精通MATLAB与CC++混合程序设计》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:刘维编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2015
  • ISBN:9787512416024
  • 页数:695 页
图书介绍:本书主要介绍Matlab与C/C++进行混合程序设计的方法和技巧。书中以Matlab与C/C++混合程序设计涉及的数据类型交换问题为主线,详细介绍了Matlab开发环境和程序设计基础、Matlab编译器、Matlab与C/C++语言的接口、生成独立可执行的Matlab程序、C/C++调用Matlab程序、将Matlab程序编译为COM组件并采用C/C++调用、Matlab 引擎、Matlab C++数学库、Matcom数学库等Matlab与C/C++混合程序设计的内容。

第一部分 MATLAB与C/C++混合程序设计基础 3

第1章 MATLAB M语言程序设计基础 3

1.1 本章导读 3

1.2 MATLAB环境 3

1.2.1 命令行窗口(Command Window) 4

1.2.2 代码编辑器(Editor) 6

1.2.3 工作空间窗口(Workspace) 9

1.2.4 历史命令窗口(Command History) 9

1.2.5 历史命令保存指令(diary) 12

1.2.6 使用MATLAB环境的图形界面完成操作 12

1.2.7 MATLAB帮助 16

1.2.8 代码输入提示 17

1.3 MATLAB M语言基础 18

1.3.1 MATLAB脚本文件(Script文件) 18

1.3.2 MATLAB运算符与表达式 20

1.3.3 MATLAB函数 24

1.3.4 MATLAB M语言中的向量运算 26

1.3.5 MATLAB的程序控制 32

1.3.6 MATLAB程序异常处理 36

1.3.7 面向对象的程序设计 37

1.4 MATLAB常用的数据类型 41

1.4.1 数值阵列 42

1.4.2 字符阵列 45

1.4.3 逻辑阵列 46

1.4.4 元组阵列 47

1.4.5 结构体阵列 50

1.4.6 函数句柄阵列 52

1.5 MATLAB常用数据可视化功能 54

1.5.1 使用figure函数创建图形窗口 54

1.5.2 绘制曲线 55

1.5.3 使用area函数绘制面积图 61

1.5.4 使用quiver或quiver3函数绘制向量图 66

1.5.5 显示图像数据 68

1.5.6 显示三维曲面数据 69

第2章 C语言和C++语言程序设计基础 71

2.1 本章导读 71

2.2 编译环境 71

2.3 编辑器 72

2.4 注释 73

2.5 文件包含(include) 74

2.6 定义和声明 74

2.7 第一个C/C++语言程序 75

2.8 编译和运行 77

2.9 数据类型 78

2.9.1 常量 78

2.9.2 变量 78

2.9.3 指针 79

2.9.4 内存的分配与释放 82

2.9.5 数组 82

2.9.6 字符串 84

2.9.7 枚举类型 86

2.9.8 结构体 87

2.10 操作符 88

2.11 程序结构 91

2.12 类与对象 97

2.13 函数模板和类模板 104

2.14 C++/CLI 114

第3章 MATLAB与C/C++语言对照 117

3.1 本章导读 117

3.2 MATLAB语言 117

3.3 C语言 122

3.4 C++语言 130

3.5 MATLAB语言、C语言和C++语言实现矩阵操作的比较 139

第4章 动态链接库基础 142

4.1 本章导读 142

4.2 为什么使用动态链接库 142

4.3 C/C++语言实现动态链接库 143

4.4 C语言与C++语言动态链接库的差异 147

4.5 动态链接库的调用方式 147

4.5.1 隐式链接 147

4.5.2 显式链接 149

4.6 在MATLAB环境下创建动态链接库 152

第5章 开发与调试环境说明 154

5.1 本章导读 154

5.2 MATLAB环境 154

5.3 MATLAB Coder图形界面 155

5.4 MATLAB编译器 155

5.5 mex命令 156

5.6 mbuild命令 158

5.7 C/C++语言集成开发环境 160

5.8 Dependency工具 163

第二部分 在MATLAB中调用C/C++程序 167

第6章 MATLAB通过MEX文件调用C/C++程序 167

6.1 本章导读 167

6.2 MEX文件 167

6.3 MEX文件与M文件的关系 168

6.4 MEX文件实例 168

6.5 MEX文件结构 170

6.6 编译MEX文件 171

6.7 采用C++语言创建MEX文件 172

6.8 在MEX文件中实现图形界面功能 173

6.9 在Visual C++中调试MEX文件 179

6.9.1 利用Visual C++6.0调试MEX文件 179

6.9.2 利用Visual C++2010调试MEX文件 184

第7章 MATLAB通过动态链接库调用C/C++程序 188

7.1 本章导读 188

7.2 动态链接库 188

7.3 MATLAB动态链接库的基本操作 189

7.3.1 加载动态链接库 189

7.3.2 查看动态链接库信息 190

7.3.3 利用mbuild生成动态链接库 191

7.3.4 调用动态链接库中包含的函数 194

7.4 MATLAB动态链接库的操作函数 195

7.4.1 loadlibrary 195

7.4.2 unloadlibrary 197

7.4.3 libfunctions 197

7.4.4 libfunctionsview 198

7.4.5 libisloaded 198

7.4.6 calllib 198

7.4.7 libpointer 199

7.4.8 libstruct 199

7.5 MATLAB与动态链接库的参数传递和转换 200

7.5.1 MATLAB与C/C++语言数据类型的对照关系 200

7.5.2 MATLAB与动态链接库基本参数的直接传递 201

7.5.3 利用libpointer传递指针参数 203

7.5.4 传递MATLAB阵列类型数据 208

7.5.5 利用libstruct传递结构体参数 210

7.5.6 传递枚举类型参数 212

7.6 实例1:调用第三方提供的动态链接库完成文件读取 213

7.7 实例2:用户创建动态链接库完成文件操作 215

第8章 MATLAB通过可执行程序调用C/C++程序 221

8.1 本章导读 221

8.2 在MATLAB中执行外部程序 221

8.3 实例1:通过外部程序返回文件信息 222

8.4 实例2:通过外部程序转换文件格式 227

第9章 MATLAB通过ActiveX调用C/C++程序 233

9.1 本章导读 233

9.2 ActiveX简介 233

9.3 MATLAB调用ActiveX组件 234

9.4 实例:调用ActiveX打开文件 239

第三部分 MATLAB与C/C++语言的数据和函数接口 245

第10章 MATLAB与C/C++语言混合编程常用的数据类型 245

10.1 本章导读 245

10.2 size_t类型 245

10.3 mwIndex,mwSignedIndex和mwSize类型 245

10.4 mxChar和mxLogical类型 246

10.5 mxClassID类型 246

10.6 mxComplexity类型 247

10.7 mxArray类型 248

10.8 特殊常量 248

10.9 mwArray类 250

10.9.1 mwArray类的基本操作 251

10.9.2 mwArray类操作的详细说明 252

10.10 mwString类 258

第11章 在C/C++语言中操作MATLAB阵列的函数 260

11.1 本章导读 260

11.2 数值阵列操作函数 260

11.2.1 创建数值阵列 260

11.2.2 数值阵列的数据操作 262

11.2.3 标量数据的操作 264

11.3 字符串阵列操作函数 264

11.3.1 创建字符串阵列 264

11.3.2 字符串阵列转换为C语言字符串 266

11.3.3 获取字符阵列的数据 269

11.4 逻辑型阵列操作函数 269

11.5 稀疏矩阵操作函数 270

11.5.1 创建稀疏矩阵的操作函数 271

11.5.2 稀疏矩阵索引的操作函数 271

11.6 结构体操作函数 273

11.6.1 创建结构体 273

11.6.2 结构体域的操作 274

11.7 元组阵列操作函数 276

11.8 类对象阵列属性操作函数 278

11.9 内存操作函数 281

11.9.1 内存分配操作函数 281

11.9.2 内存释放操作函数 282

11.9.3 阵列复制操作函数 283

11.9.4 MATLAB内存操作函数与C语言内存操作函数对比 283

11.10 索引、维数和元素个数操作函数 285

11.10.1 线性索引函数 285

11.10.2 维数和元素个数操作函数 286

11.11 MATLAB阵列验证函数(Is函数) 288

11.11.1 判断MATLAB阵列类型 288

11.11.2 其他Is函数 290

11.12 其他操作函数 291

第12章 在C/C++语言中操作MATLAB阵列的方法 293

12.1 本章导读 293

12.2 MATLAB普通数值阵列的操作 293

12.3 稀疏数组阵列(Sparse Array)的操作 295

12.4 MATLAB字符阵列的操作 299

12.5 MATLAB元组阵列的操作 300

12.6 MATLAB结构体阵列的操作 302

12.7 更改MATLAB数值阵列的维数 305

12.8 分析并显示MATLAB阵列的内容 309

第13章 C/C++语言在MEX程序中的专用接口函数 320

13.1 本章导读 320

13.2 工作区变量操作函数 320

13.3 输出警告和错误信息函数 327

13.4 调用MATLAB函数和执行MATLAB命令的函数 328

13.5 操作MEX文件函数 331

第14章 在C/C++程序中操作MATLAB MAT文件 335

14.1 本章导读 335

14.2 MAT文件概要介绍 335

14.3 MAT文件格式 336

14.4 操作MAT文件的mat-API函数 339

14.4.1 MAT文件打开和关闭等操作函数 340

14.4.2 循环获取MAT文件中的变量及其信息 341

14.4.3 获取MAT文件中的变量目录和变量及其信息 342

14.4.4 将阵列写入MAT文件或删除MAT文件中的变量 342

14.5 MAT文件操作方法 343

14.5.1 向MAT文件中写入mxArray变量 343

14.5.2 从MAT文件中读取mxArray变量 348

14.5.3 查看MAT文件中的阵列变量列表 352

14.5.4 遍历MAT文件中的所有阵列变量 354

第四部分 MATLAB编译器的工作原理、发展历程和应用技巧 359

第15章 MATLAB编译器 359

15.1 本章导读 359

15.2 MATLAB编译器的工作原理 359

15.3 MATLAB编译器的发展历程 360

15.4 使用MATLAB编译器的准备工作 362

15.5 mcc编译器的典型应用:独立可执行文件 363

15.5.1 编译过程 363

15.5.2 编译过程详细分析 366

15.5.3 img.ctf文件 367

15.5.4 img_main.c文件 368

15.5.5 使用-m选项 373

15.6 C语言动态链接库 374

15.6.1 编译过程 374

15.6.2 编译过程详细分析 374

15.7 C++语言动态链接库 376

15.7.1 编译过程 376

15.7.2 编译过程详细分析 376

15.8 C语言与C++语言动态链接库的差异 378

15.9 调用MATLAB编译器生成的C/C++语言动态链接库时常用的接口函数 379

15.10 mcc命令选项、宏及捆绑命令文件 381

15.10.1 mcc常用命令选项 381

15.10.2 mcc宏选项 383

15.10.3 捆绑命令文件(bundle file) 384

15.11 MATLAB编译器应用中的常见问题 385

15.11.1 编译Script文件 385

15.11.2 MATLAB编译器关联分析失效的情况 385

15.11.3 在C/C++程序中调用MATLAB内置函数(built-in function) 388

15.11.4 可变参数传递(varargin,varargout) 388

15.11.5 在MATLAB环境下执行与通过MCR执行时的差异 390

15.11.6 获取CTF文件的目录 391

15.11.7 屏幕打印和错误信息显示函数 391

15.12 MATLAB配置工具(Deployment Tool) 396

15.12.1 Deployment Tool工具简介 396

15.12.2 利用MATLAB配置工具编译独立可执行文件 397

15.13 程序发布 399

15.13.1 MCR版本 399

15.13.2 安装MCR 399

15.13.3 独立可执行文件发布需要附加的文件 400

15.13.4 动态链接库发布需要附加的文件 400

第五部分 在C/C++程序中调用MATLAB程序 403

第16章 生成可独立运行的MATLAB程序 403

16.1 本章导读 403

16.2 MATLAB环境下编译独立可执行文件 403

16.2.1 直接编译M文件 403

16.2.2 在MATLAB M文件中调用C/C++函数 404

16.2.3 在C/C++语言中调用由MATLAB *.m文件生成的函数 407

16.3 Visual C++环境下编译独立可执行文件 413

16.3.1 趣味弹球MATLAB M程序 414

16.3.2 去除控制台窗口 418

16.3.3 去除控制台窗口的另一种方法 426

16.3.4 将输出改到Windows窗口上 433

第17章 C/C++程序通过引擎和动态链接库调用MATLAB程序 447

17.1 本章导读 447

17.2 在C++程序中调用MATLAB引擎 447

17.2.1 API函数介绍 447

17.2.2 Visual C++调用MATLAB引擎的实例 448

17.3 Visual C++中调用MATLAB M函数编译后的动态链接库 458

第18章 C/C++程序通过COM组件调用MATLAB程序 471

18.1 本章导读 471

18.2 COM基础知识 471

18.2.1 COM组件 471

18.2.2 对象和接口 472

18.2.3 COM在Windows平台下的实现方式 473

18.3 在Visual C++中调用COM组件 475

18.3.1 COM组件与HRESULT类型 475

18.3.2 COM组件与字符串 476

18.3.3 CLSID和ProgID的相互转换 476

18.3.4 AddRef(),Release(),QueryInterface()接口函数 476

18.3.5 在Visual C++中调用COM组件的步骤 477

18.4 MATLAB编译COM组件的基础知识 479

18.4.1 配置MATLAB C/C++语言编译器 479

18.4.2 使用MATLAB的Deployment Tool工具 479

18.4.3 实现COM组件的方法 480

18.4.4 实现COM组件的属性 481

18.4.5 编译COM组件 481

18.5 C/C++程序调用由Deployment Tool生成的组件 482

18.6 MATLAB COM组件与C/C++程序之间的数据转换 489

18.6.1 VARIANT数据类型 489

18.6.2 COleVariant和_variant_t类 491

18.6.3 SAFEARRAY数据类型 492

18.6.4 SAFEARRAY的创建函数 493

18.6.5 MATLAB数据类型的VARIANT类型表示 494

18.6.6 VARIANT变量与MATLAB阵列的转换规则 495

18.6.7 阵列格式标志(array formatting flags) 498

18.6.8 数据转换标志(data conversion flags) 498

18.7 MATLAB COM工具库 500

18.7.1 简介 500

18.7.2 MWUtil类 500

18.7.3 MWFlags类 501

18.7.4 MWStruct类 502

18.7.5 MWField类 505

18.7.6 MWComplex类 506

18.7.7 MWSparse类 506

18.7.8 MWArg类 507

18.7.9 MATLAB MWComUtil的枚举类型 507

18.8 安装和发布MATLAB COM组件 509

18.9 综合实例 510

18.9.1 实例1:数据转换及数组格式标志的使用 510

18.9.2 实例2:采用MWUtil处理varargin输入和varargout输出 514

18.9.3 实例3:MWStruct和MWField的操作实例 519

18.9.4 实例4:MWComplex操作实例 528

18.9.5 实例5:MWSParse操作实例 532

第19章 C/C++程序通过.NET配件调用MATLAB程序 536

19.1 本章导读 536

19.2 将MATLAB程序编译为.NET配件 536

19.3 在Visual C+++2010中调用.NET配件 537

19.4 Visual C++与MATLAB之间的数据转换 539

19.5 使用MWNumericArray操作数值阵列 540

19.5.1 数值阵列的类型 540

19.5.2 C++索引与MATLAB阵列索引 541

19.5.3 实型阵列和复型阵列 541

19.5.4 创建标量 542

19.5.5 创建矢量 543

19.5.6 创建矩阵 545

19.5.7 创建任意维数的数值阵列 547

19.6 使用MWCharArray操作字符阵列 549

19.7 使用MWLogicalArray操作逻辑阵列 551

19.8 使用MWStructArray操作结构体阵列 552

19.9 使用MWCellArray操作元组阵列 553

第20章 将MATLAB M程序转换为C/C++程序 555

20.1 本章导读 555

20.2 MATLAB Coder的功能 555

20.3 MATLAB Coder对MATLAB M语言代码的约束 556

20.4 第一个实例 557

20.4.1 实例说明 557

20.4.2 基本原理 558

20.4.3 代码实现 559

20.4.4 实例执行结果 567

20.4.5 生成C/C++代码 569

20.5 MATLAB Coder图形界面 569

20.6 codegen命令 571

20.7 MATLAB Coder的典型应用 573

20.7.1 将MATLAB M程序转换为C/C++代码 573

20.7.2 将MATLAB M程序转换为MEX文件 575

20.7.3 将MATLAB M程序编译为可执行文件 575

20.7.4 将MATLAB M程序编译为动态链接库 576

20.8 用MATLAB Coder转换后的C/C++代码中的数据类型 576

20.8.1 变量类型定义 577

20.8.2 强制类型转换 577

20.8.3 基本类型定义 578

20.8.4 复数类型 580

20.8.5 固定长度变量与可变长度变量 582

20.8.6 结构体类型 587

第六部分 与MATLAB相关的数学库 593

第21章 C/C++程序调用Matcom矩阵库 593

21.1 本章导读 593

21.2 Matcom与MATLAB 593

21.3 安装Matcom 593

21.4 在Visual C++中使用Matcom C++矩阵库 595

21.5 使用Matcom C++矩阵库的矩阵类Mm 601

21.5.1 创建数值矩阵 601

21.5.2 创建字符矩阵 602

21.5.3 利用下标访问矩阵的元素 603

21.5.4 获取矩阵数据的指针 603

21.5.5 Mm矩阵对象的初始化 604

21.5.6 Mm矩阵类的几个常用函数 605

21.5.7 Matcom C++矩阵库常量 607

21.5.8 调用系统函数 607

21.6 Matcom矩阵库的图形和图像显示功能 609

21.7 Matcom用于图形显示的常用函数 610

21.8 Matcom用于图像显示的常用函数 611

21.9 Matcom的应用实例 612

21.9.1 实例1:Matcom Mm矩阵类的创建及使用 612

21.9.2 实例2:图形绘制的基本功能演示 616

21.9.3 实例3:利用Matcom绘制动态曲线 621

21.9.4 实例4:利用Matcom进行图像显示 633

21.9.5 实例5:Matcom二维和三维曲线绘制综合应用 646

第22章 C/C++程序调用MATLAB C++数学库 660

22.1 本章导读 660

22.2 MATLAB C++数学库 660

22.3 在Visual C++工程中调用MATLAB C++数学库 660

22.4 MATLAB C++数学库的使用 663

22.5 输入和输出MATLAB阵列 663

22.5.1 直接输出到屏幕 663

22.5.2 MATLAB mwArray阵列数据的输入和输出的其他方式 664

22.6 操作MATLAB mwArray阵列 668

22.6.1 创建MATLAB mwArray阵列的操作 668

22.6.2 采用MATLAB C++数学库操作稀疏矩阵 671

22.6.3 MATLAB C++数学库对字符阵列的操作 676

22.6.4 MATLAB C++数学库对元组阵列的操作 679

22.6.5 MATLAB C++数学库对结构体阵列的操作 682

22.6.6 访问mwArray类中的数据 684

22.6.7 MATLAB C++数学库对MATLAB阵列操作常用的小技巧 687

22.6.8 调用系统函数 691

参考文献 695