📄 uq_mdpnt.m
字号:
function dist=uq_mdpnt(funfcn,b,n,delta,tol,p1,p2,p3)
%UQ_DIST 返回均匀量化器的失真,量化点设在质心.
% DIST=UQ_MDDPNT(FUNFCN,B,C,N,DELTA,TOL,P1,P2,P3)
% funfcn=在m_file中给出的信源密度函数,
%最多有三个参数:p1,p2,p3.
%[-b,b]=信源密度函数的定义域.
%n=级数的数目.
%delta=级数的大小
%p1,p2,p3=输入函数的参数
%dist=失真.
%tol=相对误差
if(2*b<delta*(n-1))
error('Too many levels for this range.');return
end
args=[];
for j=1:nargin-5
args=[args,',p',int2str(j)];
end
args=[args,')']
a(1)=-b;
a(n+1)=b;
a(2)=-(n/2-1)*delta;
y(1)=a(2)-delta/2;
for i=3:n;
a(i)=a(i-1)+delta;
y(i-1)=a(i)-delta/2;
end
y(n)=a(n)+delta;
dist=0;
for i=1:length(a)-1
name=['varnormal(x,',num2str(p1),',',num2str(p2),',',num2str(y(i)),')'];
dist=dist+quad(name,a(i),a(i+1),tol);
end
y
dist
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
% 书上的错误for i=1:n
% newfun=['(x-(',num2str(y(i)),')).^2.*',funfcn];
% dist=dist+eval(['quad(newfun,a(i),a(i+1),tol,',args]);
%end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -