
微信扫一扫,移动浏览光盘
简介
本书以简洁的语言、丰富的实例系统地介绍了C语言与MATLAB接口函数(称之为:C-MEX函数)的编程方法。用实例详细地介绍了MATLAB中所提供的数据类型在C-MEX函数中的编程方法。这些数据类型主要包括:双精度(double)以及非双精度(single、uint8、uint16、uint32、uint64、int8、int16、int32、int64)的数值阵列(如:标量、矢量、矩阵及三维阵列)、字符串、structures阵列、cell阵列、sparse阵列等。
同时,介绍了如何在C-MEX函数中实现调用MATLAB函数;如何用MATLAB本身所提供的BLAS库函数、LAPACK库函数实现C-MEX函数编程;以及如何用外接Intel MKL库函数实现C-MEX函数编程。并给出用C-MEX函数实现MATLAB中的svd、eig、lu、chol、inv、det等数学函数功能的实例,这些库函数的使用可以明显提高运算速度。同时,本书附录还介绍了在C-MEX函数中的错误语法示例、MEX库函数及MX库函数。
本书对C-MEX函数的介绍全面,举例详尽。不仅能够成为MATLAB与MEX混合编程的工程人员的参考书,而且可以作为C语言编程者的参考书,同时也可以作为MATLAB培训的课程教材。
目录
1 G-MEX函数介绍
1.1 MATLAB外部接口概述
1.1.1 MEX文件概念
1.1.2 C-NEX文件的应用
1.2 mxArray结构体
1.3 MATLAB数据类型
1.4库函数介绍
1.4.1 mx函数库
1.4.2 mex函数库
2 编写编译链接C-MEX函数的方法
2.1 MEX指令
2.2建立MEX环境
2.2.1 Lcc编译器MATLAB环境配置
2.2.2 MS VC++编译器MATLAB环境配置
2.3用MATLAB插件在MSVC环境中编写编译链接C-MEX函数
2.3.1 MATLAB插件在MSVC环境中的配置
2.3.2 C-NEX函数的编写编译链接过程示例
3 C-MEX函数的编写方法
3.1 C-MEX函数分析
3.1.1 C与XIATLAB存储方式的区别
3.1.2C-MEX函数的结构
3.1.3编写C-MEX函数的基本流程
3.2标量
3.2.1函数介绍
3.2.2双精度实数型标量
3.2.3双精度复数型标量
3.2.4双精度标量
3.3矢量
3.3.1函数介绍
3.3.2双精度实数型矢量
3.3.3双精度复数型矢量
3.3.4双精度矢量
3.4矩阵
3.4.1函数介绍
3.4.2双精度实数型矩阵
3.4.3双精度复数型矩阵
3.4.4双精度矩阵
3.5三维数组
3.5.1函数介绍
3.5.2双精度实数型三维数组
3.5.3双精度复数型三维数组
3.5.4双精度三维数组
3.6字符串
3.6.1函数介绍
3.6.2实例详解
3.7.非双精度数据
3.7.1非双精度数据分类
3.7.2函数介绍
3.7.3实例详解
3.8调用NIATLAB函数
3.8.1函数介绍
3.8.2实例详解
3.9 Structures阵列
3.9.1结构体介绍
3.9.2函数介绍
3.9.3实例详解
3.10 Cell阵列
3.10.1单元阵列介绍
3.10.2函数介绍
3.10.3实例详解
3.11 Sparse阵列
3.11.1稀疏阵列介绍
3.11.2函数介绍
3.11.3实例详解
4 GMEX函数应用举例
4.1复数的处理方法
4.1.1复数的fortran结构
4.1.2 mat2fort函数
4.1.3 fort2mat函数
4.1.4 mxArray2fort函数
4.1.5 fort2mxArray函数
4.2实现MATLAB中sum函数功能
4.2.1双精度实数型
4.2.2双精度复数型
4.3实现MATLAB中赋值功能
4.3.1双精度实数型
4.3.2双精度复数型
4.4实现MATLAB中z=sum(x.*y)功能
4.4.1双精度实数型
4.4.2双精度复数型
4.5实现NIATLAB中z=alpha*x+y功能
4.5.1双精度实数型
4.5.2双精度复数型
5 利用BLAS函数编写GMEX函数
5.1BLAS函数介绍
5.2用BLAS实现MATLAB中sum函数功能
5.2.1用dasum函数实现双精度实数型阵列sum函数功能
5.2.2用dasum函数实现双精度复数型阵列sum函数功能
5.3用BLAS实现NIATLAB中赋值功能
5.3.1用dcopy函数实现双精度实数型阵列赋值功能
5.3.2用zcopy函数及复数指针实现双精度复数型阵列赋值功能
5.4用BLAS实现MATLAB中z=sum(x.*y)功能
5.4.1用ddot函数实现双精度实数型矢量的z=sum(x.*y)功能
5.4.2用zdotu函数及复数指针实现双精度复数型矢量的z=sum(x.*y)功能
5.5用BLAS实现MATLAB中z=alpha*x+y功能
5.5.1用daxpy函数实现双精度实数型阵列的z=alpha*x+y功能
5.5.2用zaxpy函数及复数指针实现双精度复数型阵列的z=alpha*x+v功能
6 利用LAPACK函数编写GMEX函数
6.1 LAPACK函数介绍
6.2用LAPACK实现MATLAB中矩阵求逆
6.2.1用dgetrf和dgetri函数实现双精度实数型矩阵求逆
6.2.2用zgetrf、zgetri函数及复数指针实现双精度复数型矩阵求逆
6.3用LAPACK实现MATLAB中LU分解
6.3.1用dgetrf函数实现双精度实数型矩阵LU分解
6.3.2用zgetrf函数及复数指针实现双精度复数型矩阵LU分解
6.4用LAPACE实现MATLAB中SVD分解
6.4.1用dgesvd函数实现双精度实数型矩阵SVD分解
6.4.2用zgesvd函数及复数指针实现双精度复数型矩阵SVD分解
6.5用LAPACK实现MATLAB中特征分解
6.5.1用dgeev函数实现双精度实数型矩阵特征分解
6.5.2用zgeev函数及复数指针实现双精度复数型矩阵特征分解
6.6用LAPACK实现MATLAB中det功能
6.6.1用dgetrf函数实现双精度实数型矩阵det功能
6.6.2用zgetrf函数及复数指针实现双精度复数型矩阵det功能
6.7用LAPACK实现MATLAB中chol分解
6.7.1用dpotrf函数实现双精度实数型矩阵chol分解
6.7.2用zpotrf函数及复数指针实现双精度复数型矩阵chol分解
7 灵活编写GMEX函数的方法
7.1复数complex结构
7.1.1双精度复数complex结构
7.1.2mat2complex函数
7.1.3complex2mat函数
7.1.4mxArray2complex函数
7.1.5complex2mxArray函数
7.2用zdotu函数及复数结构指针实现MATLAB中z=sum(x.*y)功能
7.2.1程序代码
7.2.2分析
7.2.3编译链接与测试
7.3用zaxpy函数及复数结构指针实现MATLAB中z=alpha*x+y功能
7.3.1程序代码
7.3.2分析
7.3.3编译链接与测试
7.4建立自已的函数库
8 用INTEL MKL编写C-MEX函数
8.1 Intel MKL介绍
8.2 Intel MKL库函数的链接方法
8.2.1静态链接
8.2.2动态链接
8.3用Intel MKL及复数结构指针实现MATLAB中z=sum(x.*y)功能
8.4用Intel MKL及复数结构指针实现MATLAB中z=alpha*x+y功能
附录
附录1:C-WX函数的语法错误示例
附录2:MX库函数
附录3:MEX库函数
参考文献
1.1 MATLAB外部接口概述
1.1.1 MEX文件概念
1.1.2 C-NEX文件的应用
1.2 mxArray结构体
1.3 MATLAB数据类型
1.4库函数介绍
1.4.1 mx函数库
1.4.2 mex函数库
2 编写编译链接C-MEX函数的方法
2.1 MEX指令
2.2建立MEX环境
2.2.1 Lcc编译器MATLAB环境配置
2.2.2 MS VC++编译器MATLAB环境配置
2.3用MATLAB插件在MSVC环境中编写编译链接C-MEX函数
2.3.1 MATLAB插件在MSVC环境中的配置
2.3.2 C-NEX函数的编写编译链接过程示例
3 C-MEX函数的编写方法
3.1 C-MEX函数分析
3.1.1 C与XIATLAB存储方式的区别
3.1.2C-MEX函数的结构
3.1.3编写C-MEX函数的基本流程
3.2标量
3.2.1函数介绍
3.2.2双精度实数型标量
3.2.3双精度复数型标量
3.2.4双精度标量
3.3矢量
3.3.1函数介绍
3.3.2双精度实数型矢量
3.3.3双精度复数型矢量
3.3.4双精度矢量
3.4矩阵
3.4.1函数介绍
3.4.2双精度实数型矩阵
3.4.3双精度复数型矩阵
3.4.4双精度矩阵
3.5三维数组
3.5.1函数介绍
3.5.2双精度实数型三维数组
3.5.3双精度复数型三维数组
3.5.4双精度三维数组
3.6字符串
3.6.1函数介绍
3.6.2实例详解
3.7.非双精度数据
3.7.1非双精度数据分类
3.7.2函数介绍
3.7.3实例详解
3.8调用NIATLAB函数
3.8.1函数介绍
3.8.2实例详解
3.9 Structures阵列
3.9.1结构体介绍
3.9.2函数介绍
3.9.3实例详解
3.10 Cell阵列
3.10.1单元阵列介绍
3.10.2函数介绍
3.10.3实例详解
3.11 Sparse阵列
3.11.1稀疏阵列介绍
3.11.2函数介绍
3.11.3实例详解
4 GMEX函数应用举例
4.1复数的处理方法
4.1.1复数的fortran结构
4.1.2 mat2fort函数
4.1.3 fort2mat函数
4.1.4 mxArray2fort函数
4.1.5 fort2mxArray函数
4.2实现MATLAB中sum函数功能
4.2.1双精度实数型
4.2.2双精度复数型
4.3实现MATLAB中赋值功能
4.3.1双精度实数型
4.3.2双精度复数型
4.4实现MATLAB中z=sum(x.*y)功能
4.4.1双精度实数型
4.4.2双精度复数型
4.5实现NIATLAB中z=alpha*x+y功能
4.5.1双精度实数型
4.5.2双精度复数型
5 利用BLAS函数编写GMEX函数
5.1BLAS函数介绍
5.2用BLAS实现MATLAB中sum函数功能
5.2.1用dasum函数实现双精度实数型阵列sum函数功能
5.2.2用dasum函数实现双精度复数型阵列sum函数功能
5.3用BLAS实现NIATLAB中赋值功能
5.3.1用dcopy函数实现双精度实数型阵列赋值功能
5.3.2用zcopy函数及复数指针实现双精度复数型阵列赋值功能
5.4用BLAS实现MATLAB中z=sum(x.*y)功能
5.4.1用ddot函数实现双精度实数型矢量的z=sum(x.*y)功能
5.4.2用zdotu函数及复数指针实现双精度复数型矢量的z=sum(x.*y)功能
5.5用BLAS实现MATLAB中z=alpha*x+y功能
5.5.1用daxpy函数实现双精度实数型阵列的z=alpha*x+y功能
5.5.2用zaxpy函数及复数指针实现双精度复数型阵列的z=alpha*x+v功能
6 利用LAPACK函数编写GMEX函数
6.1 LAPACK函数介绍
6.2用LAPACK实现MATLAB中矩阵求逆
6.2.1用dgetrf和dgetri函数实现双精度实数型矩阵求逆
6.2.2用zgetrf、zgetri函数及复数指针实现双精度复数型矩阵求逆
6.3用LAPACK实现MATLAB中LU分解
6.3.1用dgetrf函数实现双精度实数型矩阵LU分解
6.3.2用zgetrf函数及复数指针实现双精度复数型矩阵LU分解
6.4用LAPACE实现MATLAB中SVD分解
6.4.1用dgesvd函数实现双精度实数型矩阵SVD分解
6.4.2用zgesvd函数及复数指针实现双精度复数型矩阵SVD分解
6.5用LAPACK实现MATLAB中特征分解
6.5.1用dgeev函数实现双精度实数型矩阵特征分解
6.5.2用zgeev函数及复数指针实现双精度复数型矩阵特征分解
6.6用LAPACK实现MATLAB中det功能
6.6.1用dgetrf函数实现双精度实数型矩阵det功能
6.6.2用zgetrf函数及复数指针实现双精度复数型矩阵det功能
6.7用LAPACK实现MATLAB中chol分解
6.7.1用dpotrf函数实现双精度实数型矩阵chol分解
6.7.2用zpotrf函数及复数指针实现双精度复数型矩阵chol分解
7 灵活编写GMEX函数的方法
7.1复数complex结构
7.1.1双精度复数complex结构
7.1.2mat2complex函数
7.1.3complex2mat函数
7.1.4mxArray2complex函数
7.1.5complex2mxArray函数
7.2用zdotu函数及复数结构指针实现MATLAB中z=sum(x.*y)功能
7.2.1程序代码
7.2.2分析
7.2.3编译链接与测试
7.3用zaxpy函数及复数结构指针实现MATLAB中z=alpha*x+y功能
7.3.1程序代码
7.3.2分析
7.3.3编译链接与测试
7.4建立自已的函数库
8 用INTEL MKL编写C-MEX函数
8.1 Intel MKL介绍
8.2 Intel MKL库函数的链接方法
8.2.1静态链接
8.2.2动态链接
8.3用Intel MKL及复数结构指针实现MATLAB中z=sum(x.*y)功能
8.4用Intel MKL及复数结构指针实现MATLAB中z=alpha*x+y功能
附录
附录1:C-WX函数的语法错误示例
附录2:MX库函数
附录3:MEX库函数
参考文献
C语言与MATLAB接口:编程与实例
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
