Я делаю программу, в которой я выполняю некоторую обработку в Matlab, а затем сохраняю результат в файле .mat, используя следующую команду в Matlab:
save data x;
допустим, значение х = 2,
Сейчас я читаю тот же файл data.mat из программы на C ++ в Visual Studio 2010. Моя программа компилируется, и я также могу отлично прочитать имя массивов и их размеры. Теперь проблема в том, что при использовании следующей команды я не может прочитать точное значение х. Он показывает мне некоторые случайные значения каждый раз, когда я запускаю программу.
variable = matGetNextVariable(pmat, &name);
прямо сейчас значение переменной = 50779048 ..
Пожалуйста, направь меня туда, где я делаю ошибки. значение переменной должно быть 2, потому что я сохранил 2 из matlab cammand ..
Я уже проверял этот вопрос, но, кажется, никто не ответил на него,
Чтение .mat файла в C ++
void main(int argc, char **argv)
{
MATFile *pmat;
const char* name=NULL;
mxArray *pa;
/* open mat file and read it's content */
pmat = matOpen("data.mat", "r");
if (pmat == NULL)
{
printf("Error Opening File: \"%s\"\n", argv[1]);
return;
}
/* Read in each array. */
pa = matGetNextVariable(pmat, &name);
while (pa!=NULL)
{
/*
* Diagnose array pa
*/
printf("\nArray %s has %d dimensions.", name,
mxGetNumberOfDimensions(pa));
//print matrix elements
printf("\ndata %d",pa);
//get next variable
pa = matGetNextVariable(pmat,&name);
//printf("\ndata %d",pa);
//destroy allocated matrix
mxDestroyArray(pa);
}
matClose(pmat);
}
Спасибо.
После долгих поисков я нашел ответ. Кто-то уже задавал вопрос, но по-другому. Ниже приводится ссылка на ответ. Я надеюсь, что это может помочь другим.
Matlab API читает файл .mat из c ++, используя контейнер STL
Других решений пока нет …