Как сохранить данные в 32-битном двоичном файле в Matlab?

Я должен протестировать несколько "случайных чисел" с помощью несгибаемых, сгенерированных программой в MATLAB. Дихард принимает только 32-битный двоичный файл (одинарной точности), но если я сохраню свои данные в MATLAB, они сохранятся в двоичном файле с двойной точностью (так 2 * 64 = 128-битный двоичный файл). Как я могу создать 32-битный двоичный файл в MATLAB, работая в 64-битной системе?


person Community    schedule 03.06.2009    source источник


Ответы (2)


Если вы хотите читать / записывать данные в двоичный файл в определенном формате, вы должны использовать функции FREAD / FWRITE. Например, это запишет 100 случайных значений в файл как 32-битные числа с плавающей запятой:

A = rand(1,100);
fid = fopen('temp.dat','wb');
fwrite(fid,A,'float32');
fclose(fid);

Для получения дополнительной информации о файловом вводе-выводе в MATLAB вы также можете проверить эти другие связанные сообщения SO: здесь и здесь.

person gnovice    schedule 03.06.2009

В дополнение к решению gnovice вы можете захотеть сгенерировать случайные числа как `` одиночные '', например:

rand(1, 100, 'single')
person Edric    schedule 03.06.2009
comment
Это полезно помнить, если вы имеете дело с очень большими матрицами, поскольку они будут занимать меньше места, чем стандартная двойная точность, которую использует RAND. Однако вам все равно нужно указать точность для использования FWRITE. Если он не указан, FWRITE по умолчанию будет использовать точность uint8 (по какой-то причине он не просто выбирает точность переменной, которую вы ей передаете). - person gnovice; 04.06.2009