《C语言与MATLAB接口 编程与实例》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:李传军编著
  • 出 版 社:北京:北京邮电大学出版社
  • 出版年份:2004
  • ISBN:7563509402
  • 页数:288 页
图书介绍:本书以简洁的语言、丰富的实例系统完整地介绍了C语言与MATLAB接口函数(称之为:C-MEX函数)的编程方法。用实例详细地介绍了MATLAB中所提供的数据类型在C-MEX函数中的编程方法。这些数据类型主要包括:双精度(double)以及非双精度(single、uint8、uint16、uint32、uint64、int8、int16、int32、int64)的数值阵列(如:标量、矢量、矩阵及三维阵列)、字符串、structures阵列、cell阵列、sparse阵列等。

目录 1

1 C-MEX函数介绍 1

1.1 MATLAB外部接口概述 1

1.1.1 MEX文件概念 1

1.1.2 C-MEX文件的应用 2

1.2 mxArray结构体 3

1.3 MATLAB数据类型 5

1.4.1 mx函数库 6

1.4 库函数介绍 6

1.4.2 mex函数库 7

2 编写编译链接C-ME函数的方法 8

2.1 MEX指令 8

2.2 建立MEX环境 9

2.2.1 Lcc编译器MATLAB环境配置 10

2.2.2 MS VC++编译器MATLAB环境配置 14

2.3 用MATLAB插件在MSVC环境中编写编译链接C-MEX函数 16

2.3.1 MATLAB插件在MSVC环境中的配置 16

2.3.2 C-MEX函数的编写编译链接过程示例 18

3 C-MEX函数的编写方法 23

3.1 C-MEX函数分析 23

3.1.1 C与MATLAB存储方式的区别 23

3.1.2 C-MEX函数的结构 24

3.1.3 编写C-MEX函数的基本流程 26

3.2 标量 30

3.2.1 函数介绍 31

3.2.2 双精度实数型标量 33

3.2.3 双精度复数型标量 34

3.2.4 双精度标量 36

3.3 矢量 39

3.3.1 函数介绍 39

3.3.2 双精度实数型矢量 40

3.3.3 双精度复数型矢量 42

3.3.4 双精度矢量 44

3.4 矩阵 48

3.4.1 函数介绍 49

3.4.2 双精度实数型矩阵 50

3.4.3 双精度复数型矩阵 52

3.4.4 双精度矩阵 54

3.5 三维数组 58

3.5.1 函数介绍 60

3.5.2 双精度实数型三维数组 61

3.5.3 双精度复数型三维数组 64

3.5.4 双精度三维数组 67

3.6 字符串 72

3.6.1 函数介绍 74

3.6.2 实例详解 75

3.7 非双精度数据 77

3.7.1 非双精度数据分类 77

3.7.2 函数介绍 78

3.7.3 实例详解 81

3.8 调用MATLAB函数 92

3.8.1 函数介绍 92

3.8.2 实例详解 93

3.9 Structuires阵列 95

3.9.1 结构体介绍 95

3.9.2 函数介绍 96

3.9.3 实例详解 100

3.10 Cell阵列 105

3.10.1 单元阵列介绍 105

3.10.2 函数介绍 106

3.10.3 实例详解 108

3.11 Sparse阵列 112

3.11.1 稀疏阵列介绍 112

3.11.2 函数介绍 113

3.11.3 实例详解 115

4 C-MEX函数应用举例 119

4.1 复数的处理方法 119

4.1.1 复数的fortran结构 119

4.1.2 mat2fort 函数 120

4.1.3 fort2mat函数 121

4.1.4 mxArray2fort函数 122

4.1.5 fort2mxArray函数 123

4.2 实现MATLAB中sum函数功能 124

4.2.1 双精度实数型 124

4.2.2 双精度复数型 129

4.3 实现MATLAB中赋值功能 133

4.3.1 双精度实数型 134

4.3.2 双精度复数型 137

4.4 实现MATLAB中z=sum(x.*y)功能 141

4.4.1 双精度实数型 141

4.4.2 双精度复数型 144

4.5 实现MATLAB中z=alpha*x+y功能 148

4.5.1 双精度实数型 148

4.5.2 双精度复数型 152

5 利用BLAS函数编写C-MEX函数 159

5.1 BLAS函数介绍 159

5.2 用BLAS实现MATLAB中sum函数功能 159

5.2.1 用dasum函数实现双精度实数型阵列sum函数功能 159

5.2.2 用dasum函数实现双精度复数型阵列sum函数功能 164

5.3 用BLAS实现MATLAB中赋值功能 168

5.3.1 用dcopy函数实现双精度实数型阵列赋值功能 168

5.3.2 用zcopy函数及复数指针实现双精度复数型阵列赋值功能 172

5.4 用BLAS实现MATLAB中z=sum(x.*y)功能 175

5.4.1 用ddot函数实现双精度实数型矢量的z=sum(x.*y)功能 176

5.4.2 用zdotu函数及复数指针实现双精度复数型矢量的z=sum(x.*y)功能 179

5.5 用BLAS实现MATLAB中z=alpha*x +y功能 182

5.5.1 用daxpy函数实现双精度实数型阵列的z=alpha*x+y功能 182

5.5.2 用zaxpy函数及复数指针实现双精度复数型阵列的z=alpha*x +y功能 186

6 利用LAPACK函数编写C-MEX函数 192

6.1 LAPACK函数介绍 192

6.2 用LAPACK实现MATLAB中矩阵求逆 192

6.2.1 用dgetrf和dgetri函数实现双精度实数型矩阵求逆 193

6.2.2 用zgetrf、zgetri函数及复数指针实现双精度复数型矩阵求逆 195

6.3.1 用dgetrf函数实现双精度实数型矩阵LU分解 198

6.3 用LAPACK实现MATLAB中LU分解 198

6.3.2 用zgetrf函数及复数指针实现双精度复数型矩阵LU分解 205

6.4 用LAPACK实现MATLAB中SVD分解 213

6.4.1 用dgesvd函数实现双精度实数型矩阵SVD分解 213

6.4.2 用zgesvd函数及复数指针实现双精度复数型矩阵SVD分解 219

6.5 用LAPACK实现MATLAB中特征分解 225

6.5.1 用dgeev函数实现双精度实数型矩阵特征分解 226

6.5.2 用zgeev函数及复数指针实现双精度复数型矩阵特征分解 231

6.6.1 用dgetrf函数实现双精度实数型矩阵det功能 236

6.6 用LAPACK实现MATLAB中del功能 236

6.6.2 用zgetrf函数及复数指针实现双精度复数型矩阵det功能 239

6.7 用LAPACK实现MATLAB中chol分解 244

6.7.1 用dpotrf函数实现双精度实数型矩阵chol分解 245

6.7.2 用zpotrf函数及复数指针实现双精度复数型矩阵chol分解 247

7 灵活编写C-MEX函数的方法 251

7.1 复数complex结构 251

7.1.1 双精度复数complex结构 251

7.1.2 mat2complex函数 252

7.1.3 complex2mat函数 253

7.1.4 mxArray2complex函数 254

7.1.5 complex2mxArray函数 255

7.2 用zdotu函数及复数结构指针 255

实现MATLAB中z=sum(x.*y)功能 255

7.2.1 程序代码 256

7.2.2 分析 258

7.3 用zaxpy函数及复数结构指针 260

实现MATLAB中z=alpha*x+y功能 260

7.2.3 编译链接与测试 260

7.3.1 程序代码 261

7.3.2 分析 264

7.3.3 编译链接与测试 265

7.4 建立自已的函数库 267

8 用INTEL MKL编写C-MEX函数 269

8.1 Intel MKL介绍 269

8.2 Intel MKL库函数的链接方法 270

8.2.2 动态链接 271

8.2.1 静态链接 271

8.3 用Intel MKL及复数结构指针实现 272

MATLAB中z=sum(x.*y)功能 272

8.4 用Intel MKL及复数结构指针实现 275

MATLAB中z=alpha*x+y功能 275

附录 281

附录1:C-MEX函数的语法错误示例 281

附录2:MX库函数 283

附录3:MEX库函数 286

参考文献 288