mex 的目的

通过C/C++语言编写代码,在Matlab中将其编译成mex文件主要可以做以下几方面的事情:

1、加快程序的执行速度. Matlab在for上如老牛拉车的速度确实让人抓狂.

2、将Matlab作为C++的开发调试环境.尤其是有大量数据需要处理时,用Matlab观察其中间结果十分方便.

3、据称可以弥补Matlab硬件设备接口的薄弱环节.

今天写了第一个使用MEX.

一个简单的对Matlab普通数值矩阵的操作.

其中Matlab规定的与操作系统版本有关的mwSize,mwIndex, size_t在32位系统上其实本质上就是int,所以

一律用int代替.

#include "mex.h"
#include
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{int i,j,k;
int index;
double* pr=NULL;
double* pi=NULL;
int M,N; int ndim;
int dims[2];for (i=0;i
{  if ((mxIsDouble(prhs[i]))&&(mxGetNumberOfDimensions(prhs[i])==2))
{
pr=mxGetPr(prhs[i]);
pi=mxGetPi(prhs[i]);
M=mxGetM(prhs[i]);
N=mxGetN(prhs[i]);
ndim=mxGetNumberOfDimensions(prhs[i]);
mexPrintf("变量%d:\n",i);  for (j=0;j
{
dims[0]=j;
for (k=0;k
{
dims[1]=k;
index=mxCalcSingleSubscript(prhs[i],ndim,dims);
if (pi==NULL)
{
mexPrintf("%6.2f",pr[index]);
}
else
{
mexPrintf("%6.2f+ %6.2fj",pr[index],pi[index]);
}
}
mexPrintf("\n");
}
}else
{
mexPrintf("input NUMB %d matrix is not 2 dims&double numerical array\n",i);  }
}}

Result:

>>mex test.cpp
>> test(a,b,c)变量0: 0.35 0.62 0.83 0.20 0.47 0.59 0.25 0.35 0.55变量1: 0.92 0.38 0.53 0.57 0.29 0.57 0.78 0.47 0.76 0.08 0.93 0.01 0.75 0.05 0.13 0.34变量2: 0.16+  0.87j 0.60+  0.43j 0.45+  0.14j 0.83+  0.85j 0.11+  0.08j 0.79+  0.08j 0.26+  0.91j 0.08+  0.87j 0.54+  0.62j 0.96+  0.24j 0.31+  0.40j 0.65+  0.18j 0.23+  0.58j 1.00+  0.35j 0.00+  0.12j 0.53+  0.26j 0.69+  0.26j 0.91+  0.55j 0.08+  0.51j 0.77+  0.18j 0.17+  0.80j 0.75+  0.15j 0.15+  0.14j 0.44+  0.40j 0.82+  0.24j
>> help test

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5928957.html,如需转载请自行联系原作者

matlab mex入门简介相关推荐

  1. Matlab编程入门指南:简介、安装、学习路线和几十个编程案例分析。

    一.Matlab编程入门指南:简介.安装.学习路线和几十个编程案例分析. 1.Matlab编程语言是一种广泛应用于科学计算.工程计算.数据分析.统计分析.信号处理等领域的高级数值计算和数据可视化软件. ...

  2. matlab从入门到精通 iso,《MATLAB从入门到精通》.(胡晓冬,董辰辉).[PDF]

    .1.7 workspace browser和variable editor窗口 15 1.7.1 workspace browser窗口 15 1.7.2 variable editor窗口 15 ...

  3. 有没有matlab软件教程基础讲课的老师,详解MATLAB快速入门与应用之MATLAB软件教学视频...

    本教程为<详解MATLAB快速入门与应用>的DVD部分,没有PDF教材, 本文件夹中提供各章范例的源程序.程序编号与书中例子的编号不完全相同,如"2.1.1-5"表示为 ...

  4. Markdown入门简介

    参考 http://sspai.com/25137 作者: Te_Lee 文章来源: 少数派 Markdown入门简介(使用工具Haroopad) 一.使用的工具----haroopad(http:/ ...

  5. matlab::mex::ArgumentList outputs的创建

    C++ MEX Functions 的代码如下 #include "mex.hpp" #include "mexAdapter.hpp"class MexFun ...

  6. 分布式文件系统—HDFS—入门简介

    原文作者:Zh_Y_G 原文地址:HDFS入门简介 目录 HDFS是什么? 设计目标: 安装配置 HDFS读写流程图解 CheckPoint HDFS是什么? 易于扩展的分布式文件系统 运行在大量普通 ...

  7. Logstash入门简介

    Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) ...

  8. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  9. 车联网大数据框架_大数据基础:ORM框架入门简介

    作为大数据开发技术者,需要掌握扎实的Java基础,这是不争的事实,所以对于Java开发当中需要掌握的重要框架技术,也需要有相应程度的掌握,比如说ORM框架.今天的大数据基础分享,我们就来具体讲一讲OR ...

最新文章

  1. 金九银十,不要跳槽!
  2. 【MyBatis学习13】MyBatis中的二级缓存
  3. 二、搭建Jupyter Notebook环境
  4. 手机号验证_谷歌修改密码时遇到手机号验证的解决办法
  5. [Java基础]自定义注解之属性定义
  6. 面试必备:CAS无锁机制
  7. Eigen datamap 问题
  8. Ambari 安装配置 MySql
  9. java 生成二维码,带logo,底部文字
  10. HBase权威指南中文版pdf
  11. html轮播图代码自适应,【简易轮播代码】自适应全屏轮播banner图切换代码
  12. NetApp 数据存储解决方案:广泛的全闪存、混合闪存和对象存储系统产品组合
  13. Shi-Tomasi角点检测
  14. 明源云客微信抢房技巧_明源云客车位线上开盘体验 - 微信抢房_软件抢房_网上选房_手机抢房_代抢房 - 爱抢房...
  15. UE4_虚幻引擎4多人联机基础知识和客户端服务器通信机制详解
  16. STM32MP157驱动开发——Linux IIO驱动(上)
  17. 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理
  18. 如何在 Windows 中快速查找文档
  19. teach sex java_java反射机制
  20. TK 设置tkinter窗口的置顶属性,保持最上层

热门文章

  1. thinkphp 点击分类显示分类下的文章(完整)
  2. GPU异构计算基础知识
  3. C语言100个囚徒和灯泡,经典算法问题其一:百日囚徒问题
  4. 前端基础知识(grid布局)
  5. flowable集成spring boot ----任务监听器
  6. java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊!
  7. 用 Python 压缩文件方法汇总
  8. 01654报错: 索引无法通过8扩展
  9. 税分类及配置 tax
  10. 华为datacom和RS对比有什么区别?