将boost :: multi_array的std :: complex值复制到mxArray

时间:2016-04-20 15:06:31

标签: c++ matlab boost

我试图将st ::复杂值的boost :: multi_array复制到mxArray,这样我就可以将值写入MATLAB .mat文件中。当我将.mat文件加载到MATLAB中时,它只有数据的实部,而没有虚部。这是一段代码片段,展示了我在做什么。

0 0 1 3 0 1 ....
1 5 1 0 0 3.....
....

同样值得注意的是,当我进行memcpy调用时,当我终止我的应用程序时,SAP_max_combined_complex的释放会崩溃。如果我注释掉memcpy调用,则释放正常(或者至少不会崩溃)。

任何想法我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

Matlab将实部和虚部存储为单独的数组。 mxGetData()只返回指向实部的指针!

另一方面,你的方法(主要是因为std :: complex)将实部和虚部存储为成对。

你需要解开实部和虚部的对,并将它们写在不同的数组中(实部转到mxGetData(),想象部分转到mxGetImagData())。