1、信息论实验 实验一 模拟信号取样仿真实验目的:信源编码是产生信源有效数据的的源头,利用信源的统计特性,解除信源的相关性,去掉信源的冗余信息,以达到压缩信源的信息率的目的。本实验通过仿真来演示模拟信号的取样。实验内容:通过MATLAB / Simulink软件对正弦模拟信号转化为离散信号进行仿真。 图1 模拟信号取样仿真框图设置参数:1. Sine Wave(正弦信号发生器)位置:SimulinkSources 参 数 名 称参 数 值Sine typeTime based Amplitude 1Bias 0Frequency 2*piPhase 0Sample time 0 2. Pulse
2、Generator(脉冲信号发生器)位置:SimulinkSources 参 数 名 称参 数 值Pulse typeTime based Amplitude 1.5Period 0.025Pulse width 50Phase delay 03. Constant(常数)位置:SimulinkSources 参 数 名 称 参 数 值 Constant value 2 0 -3.34. Scope(示波器)位置:SimulinkSinks 参 数 名 称 参 数 值 Time range 1 Sampling 0.0005 Y-max 3.5 Y-min -3.5仿真结果 图2 正弦波及脉冲
3、信号波形示波器显示图实验二 信源编码中压缩算法DCT变换函数的应用实验目的:信源编码以去除消息中的自然剩余来提高信息传输的有效性为目的。基于DCT压缩算法在信源编码中广泛应用,本实验通过离散余弦变换实现对图像的压缩,以及通过逆离散余弦变换实现对压缩后图像的重构。实验内容:1.输入图像,DCT变换实现图像压缩;2.将输入图像划分成8*8的图像块,计算其DCT系数; 3.通过DCT系数对图像块实现逆DCT重构。源代码如下:I=imread(cameraman.tif); %读入图像I=im2double(I);J=dct2(I);imshow(J)I=imread(cameraman.tif);I
4、=im2double(I);T=dctmtx(8); %产生DCT变换矩阵B=blkproc(I,8 8,P1*x*P2,T,T); %计算二维DCTmask=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;%二值掩膜,用以压缩DCT的系数 B2=blkproc(B,8 8,P1.*x,mask);%只保留DCT的10个系数 I2=blkproc(B2,8 8,P1*x*P2,T,T);%
5、逆DCT变换,用来重构图像 imshow(I),figure,imshow(I2)实验结果:实验三 信道编码线性分组码、Hamming码仿真以及循环码、卷积码编解码实验1. 线性分组码、Hamming码仿真实验实验目的:线性分组码是最重要也是使用最广的分组码。通过本实验仿真,掌握线性分组码码字空间的确定方法以及线性分组码的最小码重。Hamming码是一种很常用的线性分组码,对于二进制的Hamming码,能够纠正所有单比特错误。了解Hamming码的编码。实验内容:1、(7,3)线性分组码的生成矩阵如下所示,确定其码字空间,以及该码的最小码重。 G = 1 0 0 1 1 1 0 0 1 0 0
6、 1 1 1 0 0 1 1 1 0 1实现的MATLAB源代码为: clear; k=3;for i=1:2k for j=k:-1:1 if rem(i-1,2(-j+k+1)=2(-j+k) m(i,j)=1; else m(i,j)=0 end endend%定义生成矩阵Gg=1 0 0 1 1 1 0; 0 1 0 0 1 1 1; 0 0 1 1 1 0 1;%产生码字空间c=rem(m*g,2);%找出最小汉明距离d_min=min(sum(c(2:2k,:)2、Hamming码编码:源程序为:hammgen(3);clear;m=3;h,g,n,k=hammgen(m);msg
7、=randint(100,k,0,1);code=encode(msg,n,k,hamming/binary)变量code中返回编码后的信号序列 实验结果: m = 0 0 0m = 0 0 0m = 0 0 0m = 0 0 0 0 0 1m = 0 0 0 0 0 1m = 0 0 0 0 0 1 0 0 0m = 0 0 0 0 0 1 0 1 0m = 0 0 0 0 0 1 0 1 0 0 1 1m = 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0m = 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0m = 0 0 0 0 0 1 0 1 0 0 1 1 1
8、 0 0 0 0 1m = 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0d_min = 4 2.循环码、卷积码编解码实验实验目的:循环码是线性码的一个重要子类,它的码字具有循环性。也就是说,它的任一码字无论是向左移还是向右移,无论多少位,所得到的码字仍然是可用的。通过本实验,知道循环码的编码和解码。 卷积码在把k0个输入比特序列编为长度为n0的编码输出序列的时候,编码输出序列不仅和当前输入比特序列有关,还和编码器先前输入的信息比特序列有关。通过本实验,了解卷积码的编码。实验内容:1、循环码编码、解码、计算误码率MATLAB源程序: n=3; k=2; ms
9、g=randint(100,k,0,1); code=encode(msg,n,k,cyclic/binary);noisycode=rem(code+randerr(100,n,0 1;.7 .3),2); %加噪newmsg=decode(noisycode,n,k,cyclic); %解码number,ratio=biterr(newmsg,msg); %计算误码率disp(The bit error rate is,num2str(ratio)%误码率将显示在命令窗口中执行,在command window窗口中将显示:The bit error rate is 0.11 2、对消息序列:10011100110000111进行卷积编码 其MATLAB源代码如下: clear; msg=1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0; L=3; %抑制长度 CodeGenerator=4 5 7; %多项式描述 trellis=poly2trellis(L,CodeGenerator); %转换为网格图描述 code,final_state=convenc(msg,trellis)实验结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1