Итак, у меня есть файл Matlab, который является 3D-матрицей. Я использую C ++ для чтения в файле, особенно с matio.h, но у меня возникли некоторые затруднения / путаница с чтением реальных данных. Я знаю, как узнать, сколько измерений, рангов и названий данных, но на самом деле читать данные — сложная часть. В настоящее время у меня есть
mat_t *mat = Mat_Open(result, MAT_ACC_RDONLY);
matvar_t *matvar;
matvar = Mat_VarReadNExtInfo(mat);
int r = matvar->dims[0];
Я думаю, я не совсем понимаю, как использовать указатель данных matvar-> data.
Вы можете выбрать свою переменную, используя:
matvar_t *matVar = NULL;
matVar = Mat_VarRead(mat, (char*)"VarName");
Чтение данных возможно через:
unsigned Size = matVar->nbytes/matVar->data_size ;
const double *Data = static_cast<const double*>(matVar->data) ;
for(int i=0; i<Size; ++i)
{
std::cout<<"\t["<<i<<"] = "<<Data[i]<<"\n" ;
}
Поскольку это C-код, значения находятся в памяти друг за другом. С этим решением вы должны самостоятельно преобразовать двойной массив в 3D-массив, используя размеры.
Другим решением может быть использование функции Mat_VarReadDataAll.
Других решений пока нет …