Сохраните Матрицу в Matlab в bin-файле и прочитайте ее на С ++

0

Я сохранил целочисленную матрицу 10x10 I в Matlab в двоичный файл, используя fwrite:

fid = fopen('True.bin' , 'w');
fwrite(fid , I , 'int');
fclose(fid)

Теперь, когда я пытаюсь открыть его в C++, используя библиотеку fstream, он возвращает ошибку. Код C++ выглядит следующим образом:

int IMG_SIZE = 10;
char * buffer;
long size = IMG_SIZE * IMG_SIZE;
ifstream file ("True.bin", ios::in|ios::binary|ios::ate);
buffer = new char [size];
file.read (buffer, size);
file.close();

Любая идея, как загрузить файл в массив или собственную матрицу типа MatrixXi?

благодаря

Теги:
eigen
matrix
binaryfiles

1 ответ

0
Лучший ответ

Когда вы пишете значения, используя значение 'int' для аргумента precision для fwrite, он записывает их как 4-байтовые целые числа, поэтому ваша матрица 10x10 будет занимать 10x10x4 = 400 байт. Но вы выделяете буфер длиной 10x10 = 100 байт.

  • 0
    Кроме этого, немного сложно понять, в чем проблема, не сообщая нам, какую ошибку вы видите.
  • 0
    Спасибо, Том. Я изменил size до 10*10*4 и по-прежнему возвращает ошибку. Переменная I представляет собой матрицу из целых значений 10x10, которые я вычислил в Matlab. Я хочу загрузить его в программу C ++ и выполнить некоторые матричные вычисления. Но, видимо, c ++ file.read читает только в переменных char, а не целых
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню