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

📄 pcm.asv

📁 PCM编码实例。包括均匀量化编码
💻 ASV
字号:
%修改抽样间隔和程序最后两行%可以观察量化输入输出n=input('请输入量化级数,k=[8]');if isempty(n),	n=8;end%产生题目要求的函数endtime = 2;            %结束时间dt = 0.5;               %抽样间隔%dt = 0.005;t = 0:dt:endtime;a = zeros(size(t));     %产生一个长度为N的全0序列for tt=1:1/dt       a(tt+[0:endtime/2-1]*(2/dt))=t(tt);   %t when 0 <= t < 1endfor tt=1/dt+1:2/dt    a(tt+[0:endtime/2-1]*(2/dt))=2-t(tt);  % -t+2  when 1 <= t < 2end;%初始化amax=max(abs(a));a_quan=a/amax;%归一化b_quan=a_quan;%赋初值d=1/n;%量化间隔q=d.*[1:n];q=q-d/2;%量化电平%进行量化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))));enda_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    endendsqnr=20*log10(norm(a)/norm(a-a_quan));%求量化信噪比disp('量化信噪比')disp(sqnr)disp('量化误差')disp(a - a_quan)disp('编码结果')disp(code)plot(t,a,'r-')hold on;plot(t,a_quan,'.b')%plot(t,a_quan,'b-')%axis([0 1 0 1])

⌨️ 快捷键说明

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