我正在尝试使用NIST随机性测试套件来测试我长的0-1位序列的随机性。它要求我要么提供ASCII零和1,要么提供一个二进制文件,每个字节带有8位数据。不过,我试过了
save(...,'-ascii')、fwrite()和其他一些命令使其工作,但它不接受,它给了我一个segmentation error + igamc: UNDERFLOW error.
如果有人能说出如何创建完全匹配的格式,那就很好了。另外,如果有人知道MATHEMATICA,他们就会创建他们自己的示例文件,如下所示,也许它可以帮助您了解格式,您可以告诉我在MATLAB中应该做什么。
BinExp[num_,d_] := Module[{n,L},
If[d > $MaxPrecision, $MaxPrecision = d];
n = N[num,d];
L = First[RealDigits[n,2]]
];
SE = BinExp[E,302500];
Save["data.e",{SE}];发布于 2013-08-28 13:39:09
我假设您已经按照手册中的指示安装(编译)了该软件
要了解如何运行该软件,请参阅手册第5.3节。
您可以在matlab中生成一个随机0/1的ascii文件,如下所示:
N=10000; % <-- length of sequence
seq = rand(N,1)>0.5;
fid=fopen('test.txt','w','native');
fprintf(fid,'%d',seq)
fclose(fid)Hat @Amro在下面的注释中解释了备用二进制文件格式。
将文件放在程序源目录中,然后运行
> ./assess.exe 10000 或等效于您的系统,并按照提示进行操作。输出在文件夹中\实验\算法--测试\
您可以使用文件夹\data中的测试数据对程序进行评估,并将其与附录B中列出的结果进行比较,例如,在这里使用data.pi中的pi格式代表:
> ./assess.exe 1000000
0 [data source?]
.\data\data.pi [path to file?]
1 [tests?]
0 [adjust pars?]
1 [bitstreams?]
0 [ASCII?]编辑
以下是Amro关于如何将0/1的字符串数组A写为二进制的解释(未经测试):
fid=fopen('test.txt','w','native');
fwrite(fid, bin2dec(reshape(num2str(A),[],8)), 'uint8')
fclose(fid)https://stackoverflow.com/questions/18487901
复制相似问题