2009-06-03 2 views
3

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

ответ

6

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

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

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

3

В дополнение к решению gnovice, вы хотите, чтобы генерировать случайные числа в качестве «единого», например, так:

rand(1, 100, 'single') 
+1

Это хорошо, чтобы помнить, если вы имеете дело с очень большими матрицами, так как он будет занимать меньше, чем двойная точность по умолчанию, которую RAND будет использовать. Однако вам все же нужно указать точность использования FWRITE. Если он не указан, FWRITE будет по умолчанию «uint8» (по какой-то причине он не просто выбирает точность переменной, которую вы передаете). – gnovice

Смежные вопросы