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

3
emmy 3 Июн 2009 в 23:22

2 ответа

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

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

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

6
Community 23 Май 2017 в 15:02

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

rand(1, 100, 'single')
3
Edric 4 Июн 2009 в 00:15
1
Это полезно помнить, если вы имеете дело с очень большими матрицами, так как это займет меньше места, чем двойная точность по умолчанию, которую будет использовать RAND. Однако вам все равно нужно указать точность, которую будет использовать FWRITE. Если он не указан, FWRITE по умолчанию будет использовать точность «uint8» (по какой-то причине он не просто выбирает точность переменной, которую вы ему передаете).
 – 
gnovice
4 Июн 2009 в 00:22