Открытие 3D-файла Matlab в C ++ с Matio

Итак, у меня есть файл 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.

1

Решение

Вы можете выбрать свою переменную, используя:

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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]