📄 test.m
字号:
a=randn(1,500);
%a=[20*randn(1,20),randn(1,480)];
n=16;
amax=max(abs(a));
a_quan=a/amax;%归一化
b_quan=a_quan;%赋初值
d=2/n;%量化间隔
q=d.*[0:n-1];
q=q-((n-1)/2)*d;%量化电平
for i=1:n
%定位第i个量化间隔码子
a_quan(find((q(i)-d/2<=a_quan) & (a_quan<=q(i)+d/2)))=...
q(i).*ones(1,length(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2))));
%赋值为相应的量化电平
b_quan(find(a_quan==q(i))) =(i-1) .* ones(1,length(find(a_quan==q(i))));
end
a_quan=a_quan*amax;%恢复原值(量化后)
nu=ceil(log2(n));%编码
code=zeros(length(a),nu);
for i=1:length(a)
for j=nu:-1:0
if (fix(b_quan(i)/(2^j))==1)
code(i,(nu-j))=1;
b_quan(i)=b_quan(i)-2^j;
end
end
end
sqnr=20*log10(norm(a)/norm(a-a_quan))%求量化信噪比
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -