| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c++ matlab接口转换 -> 正文阅读 |
|
[C++知识库]c++ matlab接口转换 |
由于matlab的运算速度较慢,因此常常需要使用c++对关键部分进行运算。Matlab针对这一需求提供了相应的api方便参数传递以及封装。 这里使用的vs工程,对文件进行修改生成.mexw64文件,对于matlab可识别的文件。 这里的操作都是针对vs进行配置和操作。 一.工程配置1.配置生成文件右键->属性->常规->配置类型 动态库(.dll) 右键->属性->高级->目标文件扩展名 .mexw64 2.配置附加目录右键->属性->c++->附加包含目录? 添加$(Matlab_Dir)\extern\include;? 其中$(Matlab_Dir)为matlab安装地址 右键->属性->链接器->附加库目录 添加$(Matlab_Dir)\extern\lib\win64\microsoft;; 其中$(Matlab_Dir)为matlab安装地址 3.添加附加依赖项右键->属性->链接器->输入->附加依赖项 输入libmx.lib;libmex.lib;libmat.lib;libeng.lib; 二.接口编写1.添加头文件#include "mex.h"是matlab提供的头文件,利用提供的api进行接口函数编写 2.接口函数编写入口过程的名称必须是mexFunction,并且包含四个参数
nlhs?输出参数个数,plhs 输出参数指针? nrhs 输入参数个数,prhs 输入参数指针? 注意: 输出和输入参数的操作都是通过指针的方式进行的。MATLAB可以通过这些指针,访问内存中的数据。 3.输入参数获取接口过程要把参数传递给计算过程,还需要从prhs中读出矩阵的信息,这就要用到下面的mx-函数和mex-函数。
主要介绍的是数据获取的两个函数 mxGetData?和 mxGetPr。 mxGetData:?返回值为void类型的指针,必须转换为正确数据类型的指针的指针。 mxGetPr:返回值为double类型的指针,可以理解为它会自动转换?mxGetData的输出作为double指针。 还有一点需要注意的是,无法对未获取的值进行操作。 下面的代码在调试时会报错,无法对于未保存的变量进行操作。
4.出错信息发布函数mexErrMsgTxt,mexWarnMsgTxt两函数的具体格式如下: #include "mex.h" void mexErrMsgTxt(const char *error_msg); void mexWarnMsgTxt(const char *warning_msg); 其中error_msg包含了要显示错误信息,warning_msg包含要显示的警告信息。两函数的区别在于mexErrMsgTxt显示出错信息后即返回到MATLAB,而mexWarnMsgTxt显示警告信息后继续执行。 5.输出参数设置对于程序的返回结果需要将其保存在plhs指针当中,而且保存在plhs的返回指针类型必须是mxArray。 这里介绍两个api进行数组,矩阵的创建。由于常用的数据类型为double,这里列举的均为double类型的数组。
6.参数转置由于matlab的数据存储顺序与c++不同,因此在数据输入时需要对数据进行转换。在数据输出传递的时候,同样也需要对数组进行转换。 matlab对于数组存储是按照列进行保存的,而c++是按照行进行保存,因此在数据计算时需要格外注意。 这里是常用的行列转换的代码。
总结至此整个接口书写就结束了。该篇教程也是记录一下自己整个学习过程,希望能够看的人一点点帮助。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:35:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |