热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlabmex入门简介

 mex 的目的通过CC++语言编写代码,在Matlab中将其编译成mex文件主要可以做以下几方面的事情:1、加快程序的执行速度. Matlab在for上如老牛拉车的速度确实让人抓

 

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

 


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
author-avatar
鱼mm不会游泳456
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有