c++与MATLAB混合编程的时候,如果传递的数据是二维及以上数组时,由于C是行优先而MATLAB是列优先的原故,会导致数据排列不正确,导致程序错误。
可以传递之前和传递之后进行转置,但是要注意,数据虽然不正确,但是维数信息是正确的,所以转置前后的行和列要保持不变,仅仅调用一下转置函数估计还不能达到目的。
现提供一个CWzjWAData类,主要目的是为了定义一种数组数据类型文件,并进行读写操作。文件本身保存了维数、数据类型等额外信息,不需要额外的数据说明,可以在多种环境中无需数据格式说明的前提下传递数据,如C++,MATLAB,FORTRAN,IDL,C#等。
其中包含有C++数组与MATLAB数组的转换函数,目前支持三维及以下数组的转换。
C++数组转换为MATLAB数组template <class T>
T* cppPtr2mtPtr(watDIM dim, watPDIMS dims, T* cppPtr)
MATLAB数组转换为C++数组template <class T>
T* mtPtr2cppPtr(watDIM dim, watPDIMS dims, T* mtArr)
CWzjWAData类源代码下载:http://www.163pan.com/files/a0p00100p.html
文件名称:
CwzjWAData.tar.gz
文件介绍:
CWzjWAData类C++源代码 ==============================
https://wap.sciencenet.cn/blog-43777-327691.html
上一篇:
linux(ubuntu) IDL7.1 iplot时崩溃的解决办法下一篇:
基于MATLAB创建HDF文件及向存在HDF中追加数据