通信系统仿真小论文Word格式文档下载.docx

上传人:b****2 文档编号:4067895 上传时间:2023-05-02 格式:DOCX 页数:12 大小:182.31KB
下载 相关 举报
通信系统仿真小论文Word格式文档下载.docx_第1页
第1页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第2页
第2页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第3页
第3页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第4页
第4页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第5页
第5页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第6页
第6页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第7页
第7页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第8页
第8页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第9页
第9页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第10页
第10页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第11页
第11页 / 共12页
通信系统仿真小论文Word格式文档下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

通信系统仿真小论文Word格式文档下载.docx

《通信系统仿真小论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《通信系统仿真小论文Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。

通信系统仿真小论文Word格式文档下载.docx

(1)程序的输入:

以一维数组的形式输入要进行huffman编码的信源符号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率矢量;

然后对输入的概率矢量进行合法性判断,原则为:

如果概率矢量中存在小于0的项,则输入不合法,提示重新输入;

如果概率矢量的求和大于1,则输入也不合法,提示重新输入。

(2)huffman编码具体实现原理:

1>

在输入的概率矩阵p正确的前提条件下,对p进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组p的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及每次排序之前概率顺序的矩阵a。

2>

新生成一个n-1行n列,并且每个元素含有n个字符的空白矩阵,然后进行huffman编码:

Ø

将c矩阵的第n-1行的第一和第二个元素分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补1,后面的编码都遵守这个原则)

然后对n-i-1的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-1行第一、二个元素的根节点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成该行的第一二个元素的编码,

最后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原则进行赋值,重复以上过程即可完成huffman编码。

3>

计算信源熵和平均码长,其比值即为编码密码效率。

四、Huffman编码的Matlab源程序

p=input('

pleaseinputanumber:

'

)%提示输入界面

n=length(p);

fori=1:

n

ifp(i)<

fprintf('

\nTheprobabilitiesinhuffmancannotlessthan0!

\n'

);

p=input('

)%如果输入的概率数组中有小于0的值,则重新输入概率数组

end

end

ifabs(sum(p)-1)>

fprintf('

\nThesumoftheprobabilitiesinhuffmancanmorethan1!

)%如果输入的概率数组总和大于1,则重新输入概率数组

end

q=p;

a=zeros(n-1,n);

%生成一个n-1行n列的数组

n-1

[q,l]=sort(q)%对概率数组q进行从小至大的排序,并且用l数组返回一个数组,该数组表示概率数组q排序前的顺序编号

a(i,:

)=[l(1:

n-i+1),zeros(1,i-1)]%由数组l构建一个矩阵,该矩阵表明概率合并时的顺序,用于后面的编码

q=[q

(1)+q

(2),q(3:

n),1];

%将排序后的概率数组q的前两项,即概率最小的两个数加和,得到新的一组概率序列

c(i,1:

n*n)=blanks(n*n);

%生成一个n-1行n列,并且每个元素的的长度为n的空白数组,c矩阵用于进行huffman编码,并且在编码中与a矩阵有一定的对应关系

c(n-1,n)='

0'

;

%由于a矩阵的第n-1行的前两个元素为进行huffman编码加和运算时所得的最

c(n-1,2*n)='

1'

后两个概率,因此其值为0或1,在编码时设第n-1行的第一个空白字符为0,第二个空白字符1。

fori=2:

c(n-i,1:

n-1)=c(n-i+1,n*(find(a(n-i+1,:

)==1))-(n-2):

n*(find(a(n-i+1,:

)==1)))%矩阵c的第n-i的第一个元素的n-1的字符赋值为对应于a矩阵中第n-i+1行中值为1的位置在c矩阵中的编码值

c(n-i,n)='

%根据之前的规则,在分支的第一个元素最后补0

c(n-i,n+1:

2*n-1)=c(n-i,1:

n-1)%矩阵c的第n-i的第二个元素的n-1的字符与第n-i行的第一个元素的前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(a(n-i+1,:

)==j+1)-1)+1:

n*find(a(n-i+1,:

)==j+1))%矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值

end%完成huffman码字的分配

n

h(i,1:

n)=c(1,n*(find(a(1,:

)==i)-1)+1:

find(a(1,:

)==i)*n)%用h表示最后的huffman编码,矩阵h的第i行的元素对应于矩阵c的第一行的第i个元素

ll(i)=length(find(abs(h(i,:

))~=32))%计算每一个huffman编码的长度

l=sum(p.*ll);

%计算平均码长

\nhuffmancode:

h

hh=sum(p.*(-log2(p)));

%计算信源熵

\nthehuffmaneffciency:

t=hh/l%计算编码效率

五、程序运行结果

(1)如果输入正确的概率矢量,结果如下:

[0.320.180.050.100.150.2]

p=

0.32000.18000.05000.10000.15000.2000

huffmancode:

h=

11

00

1010

1011

100

01

thehuffmaneffciency:

t=0.9774

(2)如果输入不正确的概率矢量,结果如下:

[-0.20.50.30.4]

-0.20000.50000.30000.4000

Theprobabilitiesinhuffmancannotlessthan0!

[0.60.10.30.4]

0.60000.10000.30000.4000

Thesumoftheprobabilitiesinhuffmancanmorethan1!

[0.050.090.100.210.250.30]

0.05000.09000.10000.21000.25000.3000

0110

0111

010

10

11

t=0.9894

六、总结

1、在该实验的过程中,利用一个矩阵记录每次排序前概率的所在位置,是该实验的关键,在编码的过程中利用该矩阵就能比较容易进行huffman编码。

2、通过这个实验,对huffman编码的具体实现原理了解的更加深刻,在实验的过程中也遇到了一些问题,通过查找资料和相关书籍得到了解决,总的来说,在完成该实验的过程中,还是学到了比较多的知识,包括使对一些matlab语句的掌握的更加熟练,完成一个算法必须要有一个整体的把握等等。

 

基于MATLAB的2ASK和2FSK调制仿真

二、目的:

(1)熟悉2ASK和2FSK调制原理。

(2)学会运用Matlab编写2ASK和2FSK调制程序。

(3)会画出原信号和调制信号的波形图。

(4)掌握数字通信的2ASK和2FSK的调制方式。

三、原理分析

1、二进制振幅键控(2ASK)

频移键控是利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。

在2ASK中,载波的幅度只有两种变化状态,分别对应二进制信息“0”或“1”。

二进制振幅键控的表达式为:

s(t)=A(t)cos(w0+θ)0<t≤T

式中,w0=2πf0为载波的角频率;

A(t)是随基带调制信号变化的时变振幅,即

当发送“0”时

当发送“1”时

A(t)=

典型波形如图1所示:

图1

2ASK信号的产生方法通常有两种:

相乘法和开关法,相应的调制器如图2。

图2(a)就是一般的模拟幅度调制的方法,用乘法器实现;

图2(b)是一种数字键控法,其中的开关电路受s(t)控制。

在接收端,2ASK有两种基本的解调方法:

非相干解调(包络检波法)和相干解调(同步检测法),相应的接收系统方框图如图:

2、二进制频移键控(2FSK)

二进制频移键控信号码元的“1”和“0”分别用两个不同频率的正弦波形来传送,而其振幅和初始相位不变。

故其表达式为:

图42FSK信号时间波形

由图可见,2FSK信号的波形(a)可以分解为波形(b)和波形(c),也就是说,一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。

2FSK信号的调制方法主要有两种。

第一种是用二进制基带矩形脉冲信号去调制一个调频器,使其能够输出两个不同频率的码元。

第二种方法是用一个受基带脉冲控制的开关电路去选择两个独立频率源的振荡作为输出。

2FSK信号的接收也分为相关和非相关接收两类。

相关接收根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。

原理图如下:

非相关接收经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。

其原理图如下图所示:

图5(b)非相干方式

四、仿真源程序和代码

a=[1,0,1,1,0,1];

subplot(3,1,1);

stem(a);

title('

随机信号'

length(a)

t=i-1:

0.001:

i;

if(a(i)==1)

s=sin(2*pi*t);

end

if(a(i)==0)

s=0;

holdon;

subplot(3,1,2);

plot(t,s);

2ASK调制后的信号'

s=sin(4*pi*t);

subplot(3,1,3);

2FSK调制后的信号'

五、仿真结果

通过实验,我们在MATLAB平台上对数字信号的传输系统进行了一次仿真,有效的完善了学习过程中实践不足的问题,同时进一步巩固了原先的基础知识。

基本掌握了MATLAB的基本功能和使用方法,对数字基带传输系统有了一定的了解,加深了对2ASK和2FSK信号的调制原理的认识,理解了如何对他们进行调制,通过使用MATLAB仿真,对个调制和解调电路中各元件的特性有了较为全面的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2