在矩阵存储上,matlab是按列存储,c++是按行存储,含义如下:
矩阵mat:
1 3 2
0 4 5
在内存中都是字节相连存储的,
matlab存储格式是:103425
c++存储格式是:132045
matlab矩阵转换为c++矩阵如下函数所示:
void mx_2_mat(const mxArray* mx,Mat &mat)
{double* db;
if (!mxIsEmpty(mx))
db = mxGetPr(mx);
else
return;
CvMat *pMat = cvCreateMatHeader(mxGetN(mx),mxGetM(mx),CV_64FC1);// mxGetN(mx) = 3,mxGetM(mx)=2
cvSetData(pMat,db,pMat->step);
mat = cvarrToMat(pMat,true);
mat = mat.t();
cvReleaseMat(&pMat);
}
本文深入探讨了Matlab与C++在处理矩阵时的存储方式差异,并提供了将Matlab矩阵转换为C++矩阵的具体函数实现。详细解释了两种编程语言如何在内存中组织相同数据,以及如何通过编程技巧实现数据格式间的无缝转换。
358

被折叠的 条评论
为什么被折叠?



