Размер файла Matlab отличается от размера переменной в памяти - PullRequest
1 голос
/ 21 марта 2020

У меня есть следующий код в Matlab, fg это массив 1000x1000x1000 uint8. Окончательный размер renato.raw составляет 1,190857E6 x 1024 вместо 1E9 (1000x1000x1000). Кто-нибудь знает причину?

    fid = fopen('renato.raw', 'w');
    fprintf(fid, '%u', fg);
    fclose(fid);

В случае:

    fid = fopen('renato.raw', 'w');
    fwrite(fid,fg,'uint8');
    fclose(fid);

В этом случае файл имеет размер 0,976563E6 x 1024. Как решить эту проблему? Как объяснить?

Спасибо,

Луис Гонсалвеш

1 Ответ

1 голос
/ 21 марта 2020

fprintf(fid, '%u', fg) записывает текстовый файл с содержанием fg. Например, если fg = [0 10 20 30], файл содержит текст 0102030, сохраненный как 7 байтов в ASCII. Вот почему размер увеличивается, в зависимости от того, сколько десятичных цифр имеют числа в fg.

fwrite(fid, fg, 'uint8') записывает каждое значение fg непосредственно в виде байта. Размер файла в байтах должен быть таким же, как numel(fg). Обратите внимание, что 0.976563E6 * 1024 очень приблизительно 1000*1000*1000 (возможно, это число 0.976563E6 было отображено с некоторым округлением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...