随机生成十个斑点吸收概率,使用香农编码对这些符号编码,代码如下
x=rand(1,10);
y=sum(x);
p=x/y;
p=sort(p,‘descend’);
n=length§;
h=0;
for i=1:n
h=-p(i)log2(p(i))+h;
end
pa=zeros(1,n);
for i=2:n
pa(i)=pa(i-1)+p(i-1);
end
z=-log2§;
k=zeros(1,n);
for j=1:n
k(j)=ceil(z(j));
end
km=max(k);
b=zeros(n,km);
for i=1:n
m=pa(i);
for j=1:k(i)
m=m2;
b(i,j)=floor(m);
if m>=1
m=m-1;
end
end
end
ka=sum(p.*k);
r=h/ka;
disp§
for i=1:n
disp([num2str(p(i)),’: ',num2str(b(i,1:k(i)))]);
end
disp([‘编码速率:’,num2str®]);
香农编码的matlab实现
最新推荐文章于 2024-09-24 10:59:50 发布