MATIO读取复杂的数据



我正试图使用MATIO将程序从C++/MEX转换为C++,我想知道MATIO是否有mxGetPr(cal)mxGetPi(cal)的等价物?我在结构typedef struct matvar_t中看到它有void *data文件

以下是如何将复杂的替身写入文件:

char* fieldname = "MyComplexDoubleVariable";
double real = 4.2;
double imag = 1.5;
mat_complex_split_t mycomplexdouble = {&real, &imag};
size_t dim[2]={ 1, 1 };
matvar_t *variable = Mat_VarCreate(fieldname, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dim, &mycomplexdouble, MAT_F_COMPLEX);
Mat_VarWrite(matfp,variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB
Mat_VarFree(variable);

所以倒过来工作,我认为这会奏效mat_complex_split_t cal_complex=cal->data;,但我在编译时遇到此错误

error: conversion from ‘void*’ to non-scalar type ‘mat_complex_split_t’ requested
mat_complex_split_t cal_complex=cal->data;

如有任何帮助,我们将不胜感激。

这是我从mat文件读取复杂数据的代码
我认为应该使用static_cast来转换void *以指定类型。

const mat_complex_split_t* xData = static_cast<const mat_complex_split_t*>(matVar->data);
const double* real = static_cast<const double*>(xData->Re);
const double* imag = static_cast<const double*>(xData->Im);
// Read 10 complex num
for (int i = 0; i < 10; ++i) {
std::cout << real[i] << "+ 1j*"<< imag[i] << std::endl;
}

最新更新