⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mupcm.m

📁 可以用来实现U律的PCM编码
💻 M
字号:
function [x_quan, code]=muPCM(x,n,mup)
%x、n、mup、x_quan、code 分别为输入序列、量化电平数、压扩参数、量化输出和量化编码序列μ律非线性变换
y=max(abs(x));
a=(log(1+mup*abs(x/y))./log(1+mup)).*sign(x);
%实现均匀PCM 编码
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))));
%%求量化编码序列
a_quan=a_quan*amax;
nu=ceil(log2(n));
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
%μ 律非线性变换环节的逆变换
x_quan=(((1+mup).^(abs(a_quan))-1)./mup).*sign(a_quan);
x_quan=x_quan*y;
end;

%Start SystemView Definition ---------------
%SVU nInputs=1;
%SVU InputCaption0='x';
%SVU nOutputs=2;
%SVU OutputCaption0='x_quan';
%SVU OutputCaption1='code';
%SVU nParameters=2;
%SVU ParameterCaption0='n';
%SVU ParameterCaption1='mup';
%SVU FunctionSyntax='[x_quan,code] = muPCM(x,n,mup);';
%End SystemView Definition -----------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -