- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密码学实验一字符统计
密码学实验一
实验要求:
1、统计英文小说《战争与和平》中26个字母出现的频数,并计算出频率
2、统计小说中双频的频数,并计算频率
3、统计小说中三频的频数,并计算频率
算法思想:
单频
1、将小说以字符形读入一维数组
2、取1×26的一维数组
3、取a,A的ASCII值numa,numA
4、遍历字符数组,将数组中的字母转换成ASCII值c,当c==numa+i或者c==numA+i时,一维数组中第i个加1
5、根据得到的频数数组计算频率。
至于双频和三频,将上述步骤2分别变为26×26,26×26×26的数组,步骤4中增加循环次数,并且遍历过程中i分别以2和3为步长增加。
实验程序如下:
单频:
function [sumdata]=tongji1
fid=fopen(g:\密码学实验数据1.txt,r);
temp=fscanf(fid,%c);
n=length(temp);
sumdata=zeros(1,26);
numa=97;
numA=65;
for i=0:25
for j=1:n
t=temp(1,j);
c=double(t);
if c==numa+i||c==numA+i
sumdata(1,i+1)=sumdata(1,i+1)+1;
end
end
end
frequency=zeros(1,26);
frequency(1,:)=sumdata(1,:)/sum(sumdata);
sta=fclose(fid);
end
实验结果:
字母 字数 单频 a 74240 0.079747609 b 13169 0.014145963 c 21896 0.023520389 d 44194 0.0474726 e 118461 0.127249212 f 19970 0.021451505 g 17922 0.019251571 h 55006 0.059086705 i 66301 0.071219642 j 1359 0 k 7125 0.007653579 l 37827 0.040633254 m 25652 0.027555033 n 64598 0.069390302 o 71682 0 p 14819 0 q 1079 0.001159047 r 56109 0.060271533 s 59412 0.063819571 t 79827 0.085749089 u 27130 0.029142681 v 9295 0.009984564 w 22192 0.023838348 x 1424 0.001529642 y 19804 0 z 444 0.000476939
双频:
实验程序如下:
function [frequency]=tongji2
fid=fopen(g:\密码学实验数据1.txt,r);
temp=fscanf(fid,%c);
n=length(temp);
sumdata=zeros(26,26);
frequency=zeros(26,26);
numa=97;
numA=65;
for i=1:2:n
t1=temp(1,i);
t2=temp(1,i+1);
c1=double(t1);
c2=double(t2);
for a=0:25
for b=0:25
if c1==numa+a||c1==numA+a
if c2==numa+b||c2==numA+b
sumdata(a+1,b+1)=sumdata(a+1,b+1)+1;
end
end
end
end
end
for a=1:26
for b=1:26
frequency(a,b)=sumdata(a,b)/sum(sum(sumdata));
end
end
answer=zeros(1,26*26);
for i=1:26
for j=1:26
answer(1,26*(i-1)+j)=frequency(i,j);
end
end
[answer,index]=sort(answer,descend)
disp
文档评论(0)