📄 zishiyingsuanshubianma.txt
字号:
%编码方法
str=input('请仅输入a b c d e范围内的一串随机码串:');
l=0;h=1;d=1;
p=[0.2 0.2 0.2 0.2 0.2];
geshu=ones(1,5);
n=length(str);
for i=1:n
switch str(i)
case 'a'
geshu(1)=geshu(1)+1;
m=1;
case 'b'
geshu(2)=geshu(2)+1;
m=2;
case 'c'
geshu(3)=geshu(3)+1;
m=3;
case 'd'
geshu(4)=geshu(4)+1;
m=4;
case 'e'
geshu(5)=geshu(5)+1;
m=5;
otherwise
error('请不要输入其它字符!');
end
pl=0;ph=0;
for j=1:m-1
pl=pl+p(j);
end
for j=1:m
ph=ph+p(j);
end
l=l+d*pl;
h=l+d*(ph-pl);
d=h-l;
p=geshu/(i+5);
end
pan=(l+h)/2
%解码方法
jieguo=str(1,n);
geshu=ones(1,5);
p=[0.2 0.2 0.2 0.2 0.2];
for i=1:n
leiji=zeros(1,6);
for j=1:5
k=[1:1:j];
leiji(j+1)=sum(p(k));
end
if pan>=leiji(1) & pan<leiji(2)
jieguo(i)='a';
geshu(1)=geshu(1)+1;
pan=(pan-leiji(1))/(leiji(2)-leiji(1));
elseif pan>=leiji(2) & pan<leiji(3)
jieguo(i)='b';
geshu(2)=geshu(2)+1;
pan=(pan-leiji(2))/(leiji(3)-leiji(2));
elseif pan>=leiji(3) & pan<leiji(4)
jieguo(i)='c';
geshu(3)=geshu(3)+1;
pan=(pan-leiji(3))/(leiji(4)-leiji(3));
elseif pan>=leiji(4) & pan<leiji(5)
jieguo(i)='d';
geshu(4)=geshu(4)+1;
pan=(pan-leiji(4))/(leiji(5)-leiji(4));
elseif pan>=leiji(5) & pan<leiji(6)
jieguo(i)='e';
geshu(5)=geshu(5)+1;
pan=(pan-leiji(5))/(leiji(6)-leiji(5));
end
if i~=n
p=geshu/(5+i);
end
end
disp(jieguo)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -