matlab mex入门简介
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[]; for (i=;i
{ if ((mxIsDouble(prhs[i]))&&(mxGetNumberOfDimensions(prhs[i])==))
{
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=;j
{
dims[]=j;
for (k=;k
{
dims[]=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 .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 .34变量2: 0.16+ .87j 0.60+ .43j 0.45+ .14j 0.83+ .85j 0.11+ .08j 0.79+ .08j 0.26+ .91j 0.08+ .87j 0.54+ .62j 0.96+ .24j 0.31+ .40j 0.65+ .18j 0.23+ .58j 1.00+ .35j 0.00+ .12j 0.53+ .26j 0.69+ .26j 0.91+ .55j 0.08+ .51j 0.77+ .18j 0.17+ .80j 0.75+ .15j 0.15+ .14j 0.44+ .40j 0.82+ .24j
>> help test
matlab mex入门简介的更多相关文章
- 掌握 Ajax,第 1 部分: Ajax 入门简介
转:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作 ...
- MongoDB入门简介
MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...
- (转)Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- NodeJS入门简介
NodeJS入门简介 二.模块 在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. const http = require ...
- ASP.NET Core学习之一 入门简介
一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的“问 ...
- webservice入门简介
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 webservice入门简介 1.什么是webservice? webservice是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓的远 ...
- Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Android精通教程-第一节Android入门简介
前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...
- Nginx入门简介
Nginx入门简介 Nginx 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二 ...
随机推荐
- Sybase 导入导出命令
BCP命令详解 BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具. 一般存放在所安装的ASE或者Open Client 的BIN目录中. 可执行文件名称为bcp.EXE 参数列表如下:( ...
- easy ui 给表单元素赋值input,combobox,numberbox
①给input控件 class="easyui-textbox" <input class="easyui-textbox" data-options=& ...
- Linux的安全模式
今天尝试了一下开机启动,在rc.local中进行设置,但是我写的java -jar transport.jar是一个Hold处理,无法退出:导致开机的时候一直停留在等待页面. 处理机制: 1. 在Li ...
- sharepoint One-Time Passwords (windows basic authentication)
//设计中,未完成 references: http://www.asp.net/web-api/overview/security/basic-authentication http://techn ...
- Linux与Windows中动态链接库的分析与对比
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...
- 1196: [HNOI2006]公路修建问题 - BZOJ
Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织 ...
- ADO.net--杂七杂八(一)
private void BtnConnectDataBase_Click(object sender, RoutedEventArgs e) { string connectionString = ...
- static 内部类
一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...
- 【C++基础】内存操作 getMemory改错
内存操作的考察点:①指针 ②变量生存期及作用范围 ③动态内存申请和释放 笔试题************************************************************* ...
- What is the innovator’s solution——什么才是创新的解决方案2
前略:http://www.cnblogs.com/Kassadin/p/4233497.html 案例1 从书上的一个案例开始: 让我们来看看AT&T公司(美国电话电报公司)的案例吧.198 ...