📄 u_pcm.m
字号:
function[sqnr,a_quan,code]=u_pcm(a,n)
%函数实现u率的非均匀量化编码
%a为输入序列
% n为编码电平级数
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
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:500
p(i)=2^i;
end
r=sin(p);
for i=1:500
b_quan(i)=r(i);%加噪声
end
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 + -