《信息论与编码技术》实验教案10页文档资料.docx
《《信息论与编码技术》实验教案10页文档资料.docx》由会员分享,可在线阅读,更多相关《《信息论与编码技术》实验教案10页文档资料.docx(11页珍藏版)》请在冰点文库上搜索。
![《信息论与编码技术》实验教案10页文档资料.docx](https://file1.bingdoc.com/fileroot1/2023-5/20/fd9770f3-ce57-47fa-9458-d99fb1b9028a/fd9770f3-ce57-47fa-9458-d99fb1b9028a1.gif)
《信息论与编码技术》实验教案10页文档资料
教案
与当今“教师”一称最接近的“老师”概念,最早也要追溯至宋元时期。
金代元好问《示侄孙伯安》诗云:
“伯安入小学,颖悟非凡貌,属句有夙性,说字惊老师。
”于是看,宋元时期小学教师被称为“老师”有案可稽。
清代称主考官也为“老师”,而一般学堂里的先生则称为“教师”或“教习”。
可见,“教师”一说是比较晚的事了。
如今体会,“教师”的含义比之“老师”一说,具有资历和学识程度上较低一些的差别。
辛亥革命后,教师与其他官员一样依法令任命,故又称“教师”为“教员”。
2019~2019学年第1学期
我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。
为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?
吕叔湘先生早在1978年就尖锐地提出:
“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!
”寻根究底,其主要原因就是腹中无物。
特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:
提出问题――分析问题――解决问题,但真正动起笔来就犯难了。
知道“是这样”,就是讲不出“为什么”。
根本原因还是无“米”下“锅”。
于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。
所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。
要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。
《信息论与编码技术》实验教案
要练说,先练胆。
说话胆小是幼儿语言发展的障碍。
不少幼儿当众说话时显得胆怯:
有的结巴重复,面红耳赤;有的声音极低,自讲自听;有的低头不语,扯衣服,扭身子。
总之,说话时外部表现不自然。
我抓住练胆这个关键,面向全体,偏向差生。
一是和幼儿建立和谐的语言交流关系。
每当和幼儿讲话时,我总是笑脸相迎,声音亲切,动作亲昵,消除幼儿畏惧心理,让他能主动的、无拘无束地和我交谈。
二是注重培养幼儿敢于当众说话的习惯。
或在课堂教学中,改变过去老师讲学生听的传统的教学模式,取消了先举手后发言的约束,多采取自由讨论和谈话的形式,给每个幼儿较多的当众说话的机会,培养幼儿爱说话敢说话的兴趣,对一些说话有困难的幼儿,我总是认真地耐心地听,热情地帮助和鼓励他把话说完、说好,增强其说话的勇气和把话说好的信心。
三是要提明确的说话要求,在说话训练中不断提高,我要求每个幼儿在说话时要仪态大方,口齿清楚,声音响亮,学会用眼神。
对说得好的幼儿,即使是某一方面,我都抓住教育,提出表扬,并要其他幼儿模仿。
长期坚持,不断训练,幼儿说话胆量也在不断提高。
教学院(部)电气与电子信息工程学院
教研室电子信息教研室
授课班级07电信本、08电信专
授课教师艾青
职称职务助教
教材名称《信息论-基础理论与应用》
2010年10月1日
实验二、信源编译码
一、实验目的
1、掌握标量量化的基本使用方法。
2、掌握预测量化的基本使用方法。
3、掌握Huffman编码的仿真方法。
4、通过信源编译码,理解香农第一定理。
二、实验主要仪器与设备
1、微机
三、实验原理
大多数信源(比如语音、图像)最开始都是模拟信号,为了将信源输出数字化,信源必须量化为确定数目的级数。
量化方案可划分为标量量化和矢量量化两种。
在标量量化中每个信源输出都分别被量化,标量量化可进一步分为均匀量化和非均匀量化。
在均匀量化中量化区域是等长的;在非均匀量化中量化区域可以是不等长的。
矢量量化是对信源输出组合进行整体量化。
在MATLAB通信工具箱中提供了两种信源编译码的方法:
标量量化和预测量化。
1、标量量化
①信源编码中的μ律或A律压扩计算函数compand()
格式:
out=compand(in,param,V,method)
功能:
实现值μ律或A律压扩,其中param为μ,V为峰值。
压扩方式由method指定。
②产生量化索引和量化输出值的函数quantiz()
格式:
indx=quantiz(sig,partition)
功能:
根据判断向量partition,对输入信号sig产生量化索引indx,indx的长度与sig矢量的长度相同。
③采用训练序列和Lloyd算法优化标量算法的函数lloyds()
格式:
[parition,codebook]=lloyds(training_set,ini_codebook)
功能:
用训练集矢量training_set优化标量量化参数partition和码本codebook。
ini_codebook是码本codebook的初始值。
2、预测量化
根据过去发送的信号来估计下一个将要发送的信号值。
①差分脉冲调制编码函数dpcmenco()
格式:
indx=dpcmenco(sig,codebook,partition,predictor)
功能:
返回DPCM编码的编码索引indx。
其中参数sig为输入信号,predictor为预测器传递函数,其形式为[0,t1,…,tm]。
预测误差的量化参数由partition和predictor指定。
②信源编码中的DPCM解码函数dpcmdeco()
格式:
sig=dpcmdeco(indx,codebook,predictor)
功能:
根据DPCM信号编码索引indx进行解码。
predictor为指定的预测器,codebook为码本。
3、信源编码可分为两类:
无失真编码和限失真编码。
Huffman编码的基本原理就是为概率较小的信源输出分配较长的码字,而对那些出现可能性较大的信源输出分配较短的码字。
1)Huffman编码算法及步骤如下:
①将信源消息按照概率大小顺序排队。
②按照一定的规则,从最小概率的两个消息开始编码。
③ 将经过编码的两个消息的概率合并,并重新按照概率大小排序,重复步骤②。
④重复上面步骤③,一直到合并的概率达到1时停止。
这样便可以得到编码树状图。
⑤按照后出先编码的方式编程,即从数的根部开始,将0和1分别放到合并成同一节点的任意两个支路上,这样就产生了这组Huffman码。
2)费诺编码
属于概率匹配编码,它不是最佳编码方法,编码过程如下:
1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、将依次排列的信源符号依概率分成两组,使两个组的概率和近于相同,并对各组赋予一个二进制代码符号“0”和“1”(编m进制码就分成m组)。
3、将每一个大组的信源符号进一步再分成两组,使划分后的两个组的概率和近于相同,并又分别赋予两组一个二进制符号“0”和“1”
4、如此重复,直至每组值只剩下一个信源符号为止
5、信源符号所对应的码符号序列即为费诺码
3)、香农编码
1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、按下式计算第i个消息的二进制代码组的码长,并取整。
3、为了编成唯一可译码,首先计算第i个消息的累加概率
4、将累加概率Pi(为小数)变成二进制数
5、除去小数点,并根据码长li,取小数点后li位数作为第i个消息的码字。
四、预习要求
做实验前必须认真复习教材中关于信源编译码的有关内容。
五、实验内容及步骤
1、练习使用上述函数命令。
①用训练序列和Lloyd算法,对一个正弦信号数据进行标量化。
要求在实验报告中得到:
1)MATLAB程序;2)仿真结果
②用训练数据优化DPCM方法,对一个余弦信号数据进行标量化。
要求在实验报告中得到:
1)MATLAB程序;2)仿真结果
①用训练序列和Lloyd算法,对一个正弦信号数据进行标量化。
N=2^3;
t=[0:
100]*pi/20;
u=cos(t);
[p,c]=Lloyds(u,N);
[index,quant,distor]=quantiz(u,p,c);
plot(t,u,t,quant,’*’);
②用训练数据优化DPCM方法,对一个余弦信号数据进行标量化。
N=2^3;
t=[0:
100]*pi/20;
u=cos(t);
[predictor,codebook,partition]=dpcmopt(u,1,N);
[index,quant]=dpcmenco(u,codebook,partition,predictor);
[sig,equant]=dpcmdeco(index,codebook,predictor);
plot(t,u,t,equant,’*’);
2、利用MATLAB实现以下两种上信源编译码方法
①霍夫曼编码
②费诺编码
③香农编码
要求在实验报告中得到:
1)MATLAB程序;2)仿真结果
①霍夫曼编码
1、熵子程序
functionh=entropy(p)
%H=ENTROPY(P)returnstheentropyfunctionof
%theprobabilityvectorp.
iflength(find(p<0))~=0,
error('Notaprob.vector,negativecomponent(s)')
end
ifabs(sum(p)-1)>10e-10,
error('Notaprob.vector,componentsdonotaddupto1')
end
h=sum(-p.*log2(p));
2、哈夫曼编码程序
function[h,l]=huffman(p);
%HUFFMANHuffmancodegenerator
%[h,l]=huffman(p),Huffmancodegenerator
%returnshtheHuffmancodematrix,andlthe
%averagecodewordlengthforasourcewith
%probabilityvectorp.
iflength(find(p<0))~=0,
error('Notaprob.vector,negativecomponent(s)')
end
ifabs(sum(p)-1)>10e-10,
error('Notaprob.vector,componentsdonotaddupto1')
end
n=length(p);
q=p;
m=zeros(n-1,n);
fori=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
fori=1:
n-1
c(i,:
)=blanks(n*n);
end
c(n-1,n)='0';
c(n-1,2*n)='1';
fori=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';
forj=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
fori=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);
3、实验命令
a=[.2.15.13.12.1.09.08.07.06];
[b,c]=huffman(a);
d=entropy(a)
②费诺编码
1、费诺编码程序
functionc=fano(p)
%p=[0.250.250.200.150.100.05]
%c=fano(p)
n=size(p,2);
%已经编码完成
ifn==1
c=cell(1,1);
c{1}='';
return
end
[p,index]=sort(p);%按概率排序
p=fliplr(p);
total=sum(p);%总概率
acc=0;%累积概率
flag=0;%是否到达尾部的标志
fori=1:
n-1
newacc=acc+p(i);
ifabs(total-2*newacc)>=abs(total-2*acc)
flag=1;
break;
end
acc=newacc;
end
if~flag
i=n;
end
split=i;
%从分界点对两边的码递归做fano
c1=fano(p(1:
split-1));
c2=fano(p(split:
n));
c=cell(1,n);
%添加前缀0,1
fori=1:
split-1
c{i}=strcat('0',c1{i});
end
fori=split:
n
c{i}=strcat('1',c2{i-split+1});
end
%将顺序调整回去
c=fliplr(c);
c(index)=c;
2、实验命令
a=[.2.15.13.12.1.09.09.07.06];
t=fano(a)
③香农编码
1、香农编码程序
functionc=shannon(p)
%p=[0.250.250.200.150.100.05]
%shannon(p)
[p,index]=sort(p);
p=fliplr(p);%从大到小
n=length(p);
pa=0;%累加概率
fori=2:
n
pa(i)=pa(i-1)+p(i-1);
end
k=ceil(-log2(p));%码长计算
c=cell(1,n);%生成元胞数组,存码字,是cell,跟上一行不一样
fori=1:
n
c{i}='';
tmp=pa(i);
forj=1:
k(i)
tmp=tmp*2;
iftmp>=1
tmp=tmp-1;
c{i}(j)='1';
else
c{i}(j)='0';
end
end
end
%p
%pa
%交换回原来的顺序
c=fliplr(c);
c(index)=c;
2、实验命令
a=[.2.15.13.12.1.09.08.07.06];
b=shannon(a);
六、思考题
1、信源编码的目的?
信源编码的目的是压缩冗余度,提高信息的传输速率。
七、实验报告
1、实验报告中应具备实验中每一步骤实现的程序或过程,以及实验结果;应对实验结果进行误差分析。
2、回答思考题。