实验三模拟-数字转换材料.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三 模拟-数字转换 一、实验预习: 1.概述 2.Huffman编码 3.量化 4.均匀PCM 平按已量化值的递增次序映射。 5.非均匀PCM 二、实验内容(题目解答): 1. 编码 实验代码: 主函数: clc; p=[0.2 0.15 0.13 0.12 0.1 0.09 0.08 0.07 0.06]; [h,l]=huffman(p); H=entropy(p); 求熵函数: function h=entropy(p) if length(find(p0))~=0, error(Not a prob. vector, negative component(s)) end if abs(sum(p)-1)10e-10, error(Not a prob. vector, components do not add up to 1) end h=sum(-p.*log2(p)); Huffman编码函数: function [h,l]=huffman(p); if length(find(p0))~=0, error(Not a prob. vector, negative component(s)) end if abs(sum(p)-1)10e-10, error(Not a prob. vector, components do not add up to 1) end n=length(p); q=p; m=zeros(n-1,n); for i=1:n-1 [q,l]=sort(q); m(i,:)=[l(1:n-i+1),zeros(1,i-1)]; q=[q(1)+q(2),q(3:n),1]; end for i=1:n-1 c(i,:)=blanks(n*n); end c(n-1,n)=0; c(n-1,2*n)=1; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))... -(n-2):n*(find(m(n-i+1,:)==1))); c(n-i,n)=0; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=1; for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,... n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1)); end end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n); l1(i)=length(find(abs(h(i,:))~=32)); end l=sum(p.*l1); 实验结果: Huffman编码结果: 平均码长: 信源的熵: 2. 量化 实验代码: 主函数: echo on ; a=[-20,-5,-4,-3,-2,-1,0,1,2,3,4,5,20]; [y,dist]=mse_dist(normal,a,0.01,0,1); for i=1:length(a)-1 y(i)=centroid(normal,a(i),a(i+1),0.001,0,1); echo off ; end 子函数: function dist=uq_mdpnt(funfcn,b,n,delta,tol,p1,p2,p3) if (2*bdelta*(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:n newfun = x_a2_fnct ; dist=dist+eval([quad(newfun,a(i),a(i+1),tol,[],funfcn,, num2str(y(i)), args]); end function [y,dist]=uq_dist(funfcn,b,c,n,delta,s,tol,p1,p2,p3) if (c-

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档