📄 lloydmax.m
字号:
function[a,y,dist]=lloydmax(funfcn,b,n,tol,p1,p2,p3)
%LLOYDMAX 返回Lloyd_max量化器和对称分布均方量化误差.
%[A,Y,DIST]=LLOYDMAX(FUNFCN,B,N,TOL,P1,P2,P3)
%funfcn=m_file中给定的密度函数.
%它最多可有三个参数:p1,p2,p3
%a=给出了量化区域的边界的向量
%[-b,b]密度函数的近似支持
%n=量化区域的数目
%y=量化级别
%p1,p2,p3=funfcn的参数
%tol=相对误差
args=[];
for j=1:nargin-4
args=[args,',p',int2str(j)];%得到args为字符串 ,p1,p2
end
args=[args,')'];%得到args为字符串 ,p1,p2)
v=eval(['variance(funfcn,-b,b,tol',args]);%调用variance函数求(-b,b)内的方差
a(1)=-b;
d=2*b/n;
for i=2:n
a(i)=a(i-1)+d;
end
a(n+1)=b;%从19行到本行是给边界序列a赋初值
dist=v;%给dist赋初值
[y,newdist]=eval(['mse_dist(funfcn,a,tol',args]);%调用mse_dist求出量化级数和误差
while(newdist<0.99*dist),%循环不断的求边界和级数,知道满足多给的误差条件
for i=2:n
a(i)=(y(i-1)+y(i))/2;
end
dist=newdist;
[y,newdist]=eval(['mse_dist(funfcn,a,tol',args]);
end
a%显示量化边界
y%显示量化级数
dist%显示该量化器的量化误差
%a 是量化边界,y是量化级数,dist是均方误差,经过不断的循环,最后得到的结果是所需要的结果
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -