關於使用mxGetPr從MATLAB向C中傳遞數組的相關問題

#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++,訪問的位置也是按原數組的列向下移動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章