关于使用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 水木清华 。 谢谢原作者给...
  • ayw_hehe
  • ayw_hehe
  • 2011年08月19日 09:48
  • 3442

VC和matleb混合编程之mx矩阵赋值(C语言)

将vector容器x,y的数据转换为matlab矩阵mxMatrix的几种赋值方式: 1:memcpy(mxGetPr(mxa_x),&x[0], y.size()*sizeof(double));...
  • u010177286
  • u010177286
  • 2015年04月27日 10:58
  • 1316

matlab和C/C++混合编程--Mex (六)参数传递

最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题。现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加。首先讲讲写Mex的一些常规规定,然后我...
  • pursh0000
  • pursh0000
  • 2016年05月04日 13:54
  • 3605

matlab中mxGetScalar,mxGetPr,mxGetM,mxGetN,mxCreateDoubleMatrix的使用

最近看别人的MATLAB程序时,里面使用到C语言,涉及到几个MATLAB使用C语言程序的接口函数,对里面参数的意思稍微了解一下。       下面是在网上转载的,仅供交流学习一下。 整个c程序由一个...
  • TJXUNwu
  • TJXUNwu
  • 2014年12月25日 14:28
  • 4203

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

#include "matrix.h" double *mxGetPr(const mxArray *pm); 使用mxGetPr可以从将pm指向的数据从matlab传递到c中 mxGe...
  • cv_richie
  • cv_richie
  • 2013年01月14日 16:04
  • 2966

C++中数组与MATLAB mxArray相互赋值

完成功能下:C++中产生一个256X256大小的数组A;现在要在这个数组显示为一个灰度图像,然后把该数组里面的每一个值乘2后返回给原数组:C++程序如下:#include "stdafx.h"#inc...
  • lemon11231008
  • lemon11231008
  • 2011年06月14日 13:25
  • 1432

c#向MATLAB传递字符串数组

通过MATLAB编写功能函数,编译成.dll,供C#中调用。由于在MATLAB中编译的函数中暴露出的参数中是多个文件的物理路径(即字符串数组做参数)。而在C#中获取的文件物理路径也是通过String字...
  • xiaomashitu1203
  • xiaomashitu1203
  • 2015年10月28日 07:05
  • 1704

JNI中C和java传递数组

MainActivity package com.example.arraydeliver; import android.app.Activity; import android.app.Act...
  • disadministrator
  • disadministrator
  • 2015年04月24日 16:23
  • 818

C++向matlab engine传递二维数组,互为转置

在C/C++中,二维数组是按行排列的。即:先存放a[0]行,再存放a[1]行,接着是存放a[2]行,等等。假设这些行中,每行有N个元素,那么也是依次存放。而在Matlab中,以矩阵方式存储数据,它是按...
  • arackethis
  • arackethis
  • 2015年02月02日 19:30
  • 1530

关于使用vc++调用matlab生成的dll传递数组的问题

 网络上许多vc++调用matlab 的dll的方法使用的都是单值传递参数,但在许多情况下,我们并不能确定要传递的参数的大小,那么这个问题如何解决那?我想大家一定想到了使用指针和动态数组,是的,就是这...
  • zhaodengzhong
  • zhaodengzhong
  • 2008年03月29日 14:13
  • 1624
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于使用mxGetPr从MATLAB向C中传递数组的相关问题
举报原因:
原因补充:

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