matlab C程序
通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度
Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种
注:在Matlab里,矩阵第一行是从1开始的
1. 主接口
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
mexPrintf("hello,world!\n");
}
//编译
>> mex hello.c
//运行
>> hello
整个程序由一个接口子过程 mexFunction构成
nlhs:输出参数数目
plhs:指向输出参数的指针
nrhs:输入参数数目
prhs:输入参数
2. mxGetScalar
i = mxGetScalar(prhs[0]);
“Scalar”就是标量的意思。在Matlab里数据都是以数组的形式存在的,mxGetScalar的作用就是把通过prhs[0]传递进来的mxArray类型的指针指向的数据(标量)赋给C程序里的变量。这个变量本来应该是double类型的,通过强制类型转换赋给了整形变量i
3. mxGetPr
从指向mxArray类型数据的prhs[0]获得了指向double类型的指针
mxGetPr只能得到指向这个矩阵的指针,如果我们不知道这个矩阵的确切大小,就没法对它进行计算
4. mxGetM和mxGetN
获得传进来参数的行数和列数
5. mxCreateDoubleMatrix
mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag)
内存申请
m:待申请矩阵的行数
n:待申请矩阵的列数
6. mexErrMsgTxt
MexErrMsgTxt在给出出错提示的同时退出当前程序的运行
7. MxIsDouble
MxIsDouble则用于判断mxArray中的数据是否double类型
参考文档:http://www.cnblogs.com/tjulxh/archive/2012/04/23/2467087.html
matlab C程序的更多相关文章
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- (转)matlab练习程序(HOG方向梯度直方图)
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...
- matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读
静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...
- matlab练习程序(透视投影,把lena贴到billboard上)
本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将 ...
- matlab练习程序(多圆交点)
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交 ...
- matlab练习程序(矩形变换为单连通形状)
变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文 ...
- matlab练习程序(渲染三原色)
这里我用的空间是x向右为正,y向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0 ...
- matlab练习程序(生成希尔伯特曲线)
能够使用这样一条线遍历图像中所有的像素,不过这里没有这样做,而只是生成了这样一条曲线. 程序中h,w是最终图像的高和宽,n为希尔伯特曲线阶数. 这里如果n等于log2(h)或log2(w),则图像就全 ...
- matlab练习程序(随机直线采样)
我只是感觉好玩,写了这样一段程序. 原理就是先随机生成两个点,然后根据这两个点画直线,最后在直线上的像素保留,没在直线上的像素丢弃就行了. 最后生成了一幅含有很多空洞的图像. 当然,对含有空洞的图像是 ...
- matlab练习程序(旋转、径向模糊)
还记得过去写过径向模糊,不过当时效果似乎不好. 这次效果还可以,程序中用的算法是: 1.求当前处理点和图像中心点之间的距离r与角度ang; 2.通过对r的修改得到径向模糊. 3.通过对ang的修改得到 ...
随机推荐
- C# HttpClient设置cookies的两种办法
前言:最近公司使用HttpClient对象在发送请求,抛弃了之前的HttpWebRequest,使用httpClient有个好处:就是可以只使用一个HttpClient的实例,去完成发送所有的请求数据 ...
- javaWeb核心技术第八篇之Cookie和Session
会话技术: 会话是什么? 浏览器和服务器交互,浏览器打开网页访问服务器,会话开始,正常交互. 浏览器关闭,会话结束. 会话能干什么? 会话可以共享数据. Cookie和session将数据保存在不同的 ...
- 利用Dynamics 365 Customer Engagement的标准导入功能导入附件。
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 在Ubuntu上安装Miniconda
在Ubuntu上安装Miniconda Anaconda是一个开源的Python包管理器,而Miniconda则是轻量级的Anaconda 下载地址:https://docs.conda.io/en/ ...
- PHP匿名函数、闭包、function use
匿名函数,也叫闭包函数(closures) ,允许临时创建一个没有制定名称的函数.最常用作回调函数(callback)参数的值. 闭包函数也可以作为变量的值来使用.PHP将会自动把此种表达式转换成内置 ...
- MySql 库/表级操作 及 数据类型
数据库分类 关系型数据库(SQL):存储方式固定,安全 非关系型数据库(NoSQL):存储方式比较灵活,存储数据的效率比较高,不太安全 MySQL是一种关系型数据库管理系统(采用关系模型来组织管理数据 ...
- Linux—修改文件权限、文件拥有者以及文件所在组
修改文件权限——chmod 修改文件拥有者——chown 修改文件所属组群——chgrp
- HTTPS混合内容解析
什么是HTTPS混合内容 我们可能会有这样的经验,当我们通过HTTPS访问一个网站的时候,突然有提示:“本页面包含有不安全的内容”.这个时候会询问是否显示“不安全的内容”,这个时候,就是遇到了有混合内 ...
- HTML Rendering Error
刚下载的markdown弹窗提示html渲染错误 去官网 http://markdownpad.com/faq.html#livepreview-directx 页面搜索 This view h ...
- appium+robotframework+python连接真机定位不到元素的问题处理
这几天遇到了一个比较奇怪的问题,使用RF框架进行自动化测试的时候定位不到部分元素 并且这个元素的是有id的,更换了xpath定位也行不通,冥思苦想,加上谷歌百度,终于解决了 解决步骤如下: 1.定位问 ...