关于使用mxGetPr从MATLAB向C中传递数组的相关问题

原创 2013年01月14日 16:04:51
#include "matrix.h"

double *mxGetPr(const mxArray *pm);


使用mxGetPr可以从将pm指向的数据从matlab传递到c中

mxGetN()获得数组的列

mxGetM()获得数组的行

例如,mxArray *pm,pm指向matlab中的m*n维数组

则,  mxGetN(pm)=n

mxGetM(pm)=m

但是在传递数组时需要注意matlab中与c中数组数据的存储方向不同。

例如矩阵

A=
8 1 
3 5 
4 9 
Matlab的存储顺序是8,3,4,1,5,9,也就是说先行后列。

c中的存储数据为8,1,3,5,4,9,也就是说先列后行。

如果数组A从matlab中传递到c中mxGetN(pm)=2 mxGetM(pm)=3

要访问第i行第j列数据,在c中为pm[mGetM(pm)*(j-1)+(i-1)]

pm++,访问的位置也是按原数组的列向下移动。

相关文章推荐

用c 编写mex 程序

(re-edited by yangfanboy in Dalian Maritime University) 该文章原作者为:dodoo (虚怀),文章来源为:bbs 水木清华 。 谢谢原作者给...

mexFunction-解读数组结构

今天下午看tld 代码,看到over_lap 函数里,输入的第二个变量明明是二维数组,但是在mexfunction里只用 *x 就能引用返回值,发现和c不一样啊,于是动手写了个小测试 C.cpp  ...

Linux下动态链接库的创建和使用及C调用matlab动态库问题

其实这个资料网络上已经很多了,但是还是有一些细节让我捣鼓了很久,以及最近在做matlab mcc做成so文件供给c++调用的时候的一些问题。 首先如何制作Linux下的so 文件 【1】http://...
  • ylf13
  • ylf13
  • 2014年02月27日 22:47
  • 2635

MATLAB在调用C/C++程序成功,使用opencv库时出错,错误显示“找不到指定模块”(问题未解决)

在利用mex test.cpp后,运行test,编译成功并正常运行 代码如下#include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], ...
  • Afeijy2
  • Afeijy2
  • 2017年03月10日 16:32
  • 297

Matlab相关——三维数组变二维

代码 m=255*335;n=33; A=zeros(m,n);                         //创建一个空的二维数组 for x=1:1:255          //x从...

MATLAB 相关问题解决

  • 2015年05月14日 17:39
  • 1.39MB
  • 下载

C 字符数组与字符串的使用及加结束符'\0'的问题

1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p',...

C 字符数组与字符串的使用及加结束符'\0'的问题

1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p',...
  • Wjy2016
  • Wjy2016
  • 2016年11月15日 22:28
  • 604

A类B类C类嵌套事务问题相关类

  • 2012年07月07日 23:33
  • 36KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于使用mxGetPr从MATLAB向C中传递数组的相关问题
举报原因:
原因补充:

(最多只允许输入30个字)