现代通信技术实验指导书实验.docx

上传人:b****2 文档编号:2754332 上传时间:2023-05-04 格式:DOCX 页数:31 大小:541.63KB
下载 相关 举报
现代通信技术实验指导书实验.docx_第1页
第1页 / 共31页
现代通信技术实验指导书实验.docx_第2页
第2页 / 共31页
现代通信技术实验指导书实验.docx_第3页
第3页 / 共31页
现代通信技术实验指导书实验.docx_第4页
第4页 / 共31页
现代通信技术实验指导书实验.docx_第5页
第5页 / 共31页
现代通信技术实验指导书实验.docx_第6页
第6页 / 共31页
现代通信技术实验指导书实验.docx_第7页
第7页 / 共31页
现代通信技术实验指导书实验.docx_第8页
第8页 / 共31页
现代通信技术实验指导书实验.docx_第9页
第9页 / 共31页
现代通信技术实验指导书实验.docx_第10页
第10页 / 共31页
现代通信技术实验指导书实验.docx_第11页
第11页 / 共31页
现代通信技术实验指导书实验.docx_第12页
第12页 / 共31页
现代通信技术实验指导书实验.docx_第13页
第13页 / 共31页
现代通信技术实验指导书实验.docx_第14页
第14页 / 共31页
现代通信技术实验指导书实验.docx_第15页
第15页 / 共31页
现代通信技术实验指导书实验.docx_第16页
第16页 / 共31页
现代通信技术实验指导书实验.docx_第17页
第17页 / 共31页
现代通信技术实验指导书实验.docx_第18页
第18页 / 共31页
现代通信技术实验指导书实验.docx_第19页
第19页 / 共31页
现代通信技术实验指导书实验.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

现代通信技术实验指导书实验.docx

《现代通信技术实验指导书实验.docx》由会员分享,可在线阅读,更多相关《现代通信技术实验指导书实验.docx(31页珍藏版)》请在冰点文库上搜索。

现代通信技术实验指导书实验.docx

现代通信技术实验指导书实验

实验一数字通信Matlab程序仿真

一、实验目的

1、掌握Matlab程序设计的基本方法;

2、掌握Matlab通信仿真的基本原理;

3、掌握信源产生、信道编码、调制、信道传输、解调、信道译码、差错比较等通信过程的仿真方法;

4、掌握仿真结果的图形化表示方法;

5、仿真比较几种2FSK、2PSK、QPSK、DQPSK、16PSK、16QAM等调制方法的性能;

6、仿真比较Hamming码不同码型的纠错性能。

二、实验原理

仿真是衡量系统性能的工具,它通过仿真横型的仿真结果来推断原系统的性能,从而为新系统的建立或原系统的改造提供可靠的参考。

通过仿真,可以降低新系统失败的可能性,消除系统中潜在的瓶颈,防止对系统中某些功能部件造成过量的负载,优化系统的整体性能。

实际的通信系统是一个功能结构相当复杂的系统,对这个系统做出的任何改变(如改变某个参数的设置,改变系统的结构等)都可能影响到整个系统的性能和稳定。

因此,在对原有的通信系统做出改进或建立一个新系统之前.通常需要寸这个系统进行建模和仿真,通过仿真结果衡量方案的可行性,从中选择最合理的系统配置和参数设置,然后再应用于实际系统中。

这个过程就是通信仿真。

通信仿真是衡量通信系统性能的工具。

通信仿真可以分成离散事件仿真和连续仿真。

在离散事件仿真中,仿真系统只对离散事件做出响应,而在连续仿真中,仿真系统对输入信号产生连续的输出信号;离散事件仿真是对实际通信系统的—种简化,它的仿真建模比较简单,整个仿真过程需要花费的时间出比连续仿真少。

虽然离散事件仿真舍弃了一些仿真细节,在有些场合显得不够具体,但仍然是通信仿真的主要形式。

与一般的仿真过程类似.在对通信系统实施仿真之前,首先需要研究通信系统的特性,通过归纳和抽象建立通信系统的仿真模型。

下图所示是关于通信系统仿真流捏的一个示意图。

从图中可以看到,通信系统仿真是一个循环往复的过程,它从当前系统出发,通过分析建立起一个能够在一定程度上描述原通信系统的仿真模型,然后通过仿真实验得到相关的数据,通过对仿真数掂的分析可以得且相应的结论,然后把这个结论应用到对当前通信系统的改造中,如果改造后通信系统的性能并不像仿真结果那样令人满意,还需要重新实施通信系统仍真,这时候改造后的通信系统就成了当前系统,并且开始新一轮的通信系统仿真过程。

通信系统仿真的模型

Matlab仿真中,程序在命令窗口(CommandWindow)中按照代码的顺序解释执行,运行的初值、中间结果及输出形成数据流。

程序中的函数按照数据流的顺序依次执行,这意味着处理的数据首先要经过一个运算阶,然后再激活下一个运箅阶。

这种仿真被称为数据流仿真。

Matlab仿真可在命令窗口逐行输入命令(函数),逐步完成仿真。

也可在文本编辑器中先全部编写完成全部代码,形成M文件,再运行该文件执行仿真。

对Matlab来说,两者没有差别。

只是M文件执行时,中间不需要不断的向命令窗口输入,比较方便而已。

Matlab通信工具箱包含了大量应用于通信领域的库函数。

这些库函数是完成通信程序仿真的基础,大大方便了研究人员。

这些库函数包括:

(1)信号源函数;

randerrGeneratebiterrorpatterns

randintGeneratematrixofuniformlydistributedrandomintegers

randsrcGeneraterandommatrixusingprescribedalphabet

wgnGeneratewhiteGaussiannoise

(2)性能估计函数

berawgnBiterrorrate(BER)foruncodedAWGNchannels

bercodingBiterrorrate(BER)forcodedAWGNchannels

berconfintBERandconfidenceintervalofMonteCarlosimulation

berfadingBiterrorrate(BER)forRayleighfadingchannels

berfitFitacurvetononsmoothempiricalBERdata

bersyncBiterrorrate(BER)forimperfectsynchronization

biterrComputenumberofbiterrorsandbiterrorrate

distspecComputethedistancespectrumofaconvolutionalcode

eyediagramGenerateaneyediagram

noisebwEquivalentnoisebandwidthofafilter

scatterplotGenerateascatterplot

semianalyticCalculatebiterrorrateusingthesemianalytictechnique

symerrComputenumberofsymbolerrorsandsymbolerrorrate

(3)信源编/译码函数;

略。

(4)差错控制编码函数;

bchdecBCHdecoderbchencBCHencoder

bchgenpolyGeneratorpolynomialofBCHcode

convencConvolutionallyencodebinarydata

cyclgenProduceparity-checkandgeneratormatricesforcycliccode

cyclpolyProducegeneratorpolynomialsforacycliccode

decodeBlockdecoder

encodeBlockencoder

gen2parConvertbetweenparity-checkandgeneratormatrices

gfweightCalculatetheminimumdistanceofalinearblockcode

hammgenProduceparity-checkandgeneratormatricesforHammingcode

rsdecReed-Solomondecoder

rsdecofDecodeanASCIIfilethatwasencodedusingReed-SolomoncodersencReed-Solomonencoder

rsencofEncodeanASCIIfileusingReed-Solomoncode

rsgenpolyGeneratorpolynomialofReed-Solomoncode

syndtableProducesyndromedecodingtable

vitdecConvolutionallydecodebinarydatausingtheViterbialgorithm

(5)调制/解凋函数;

模拟:

amdemodAmplitudedemodulation

ammodAmplitudemodulation

fmdemodFrequencydemodulation

fmmodFrequencymodulation

pmdemodPhasedemodulation

pmmodPhasemodulation

ssbdemodSinglesidebandamplitudedemodulation

ssbmodSinglesidebandamplitudemodulation

数字:

dpskdemodDifferentialphaseshiftkeyingdemodulation

dpskmodDifferentialphaseshiftkeyingmodulation

fskdemodFrequencyshiftkeyingdemodulation

fskmodFrequencyshiftkeyingmodulation

genqamdemodGeneralquadratureamplitudedemodulation

genqammodGeneralquadratureamplitudemodulation

modnormScalingfactorfornormalizingmodulationoutput

mskdemodMinimumshiftkeyingdemodulation

mskmodMinimumshiftkeyingmodulation

oqpskdemodOffsetquadraturephaseshiftkeyingdemodulation

oqpskmodOffsetquadraturephaseshiftkeyingmodulation

pamdemodPulseamplitudedemodulation

pammodPulseamplitudemodulation

pskdemodPhaseshiftkeyingdemodulation

pskmodPhaseshiftkeyingmodulation

qamdemodQuadratureamplitudedemodulation

qammodQuadratureamplitudemodulation

(6)发送/接收滤波器函数

略。

(7)信道函数;

awgnAddwhiteGaussiannoisetoasignal

bscModelabinarysymmetricchannel

filter(channel)Filtersignalwithchannelobject

rayleighchanConstructaRayleighfadingchannelobject

reset(channel)Resetchannelobject

ricianchanConstructaRicianfadingchannelobject

(8)多址接入函数;

略。

(9)同步函数:

略。

(10)实用函数。

bi2deConvertbinaryvectorstodecimalnumbers

de2biConvertdecimalnumberstobinaryvectors

istrellisTrueforavalidtrellisstructure

marcumqGeneralizedMarcumQfunction

mask2shiftConvertmaskvectortoshiftforashiftregisterconfiguration

oct2decConvertoctalnumberstodecimalnumbers

poly2trellisConvertconvolutionalcodepolynomialstotrellisdescription

qfuncQfunctionqfuncinvInverseQfunction

shift2maskConvertshifttomaskvectorforashiftregisterconfiguration

vec2matConvertavectorintoamatrix

这些通信仿真函数,可在Matlab帮助系统中查询并学习使用。

如我们需要查询正交幅度调制(QAM)函数的使用方法,可在命令行输入:

>>helpqammod

则Matlab会在下面显示如下的该函数的使用方法:

QAMMODQuadratureamplitudemodulation

Y=QAMMOD(X,M)outputsthecomplexenvelopeofthemodulationofthemessagesignalXusingquadratureamplitudemodulation.Misthealphabetsizeandmustbeanintegerpoweroftwo.Themessagesignalmustconsistofintegersbetween0andM-1.Thesignalconstellationisarectangularconstellation.Fortwo-dimensionalsignals,thefunctiontreatseachcolumnas1channel.

Y=QAMMOD(X,M,INI_PHASE)specifiesaphaseoffset(rad).

Seealsoqamdemod,genqammod,genqamdemod,pammod,pamdemod,modnorm.

ReferencepageinHelpbrowser

docqammod

如需进一步查询该函数的相关内容可在Matlab帮助浏览器中的左边查询栏按index查询输入:

qammod。

下面会列出与此相关的内容,其中有qammodfunction,点击后右边窗口会显示与上述内容差不多的内容:

CommunicationsToolbox

qammodQuadratureamplitudemodulation

Syntax

y=qammod(x,M)

y=qammod(x,M,ini_phase)

Description

y=qammod(x,M)outputsthecomplexenvelopeyofthemodulationofthemessagesignalxusingquadratureamplitudemodulation.Misthealphabetsizeandmustbeanintegerpowerof2.Themessagesignalmustconsistofintegersbetween0andM-1.Thesignalconstellationisrectangularorcross-shaped,andthenearestpairofpointsintheconstellationisseparatedby2.Ifxisamatrixwithmultiplerows,thenthefunctionprocessesthecolumnsindependently.

y=qammod(x,M,ini_phase)specifiestheinitialphaseofthemodulatedsignalinradians.

Examples

ExamplesusingthisfunctionareinComputingtheSymbolErrorRateandExamplesofSignalConstellationPlots.

SeeAlso

qamdemod,genqammod,genqamdemod,pammod,pamdemod,modnorm,Modulation

可以看出对qammod函数的解释大同小异。

如果再点击相关的例子,还可以查看符号误比特率的计算和信号星座图的绘制方法。

如果我们需要绘出16QAM的信号星座图,可按如下的办法进行:

>>M=16;%16进制

x=[0:

M-1];%数据源

y=qammod(x,M);%QAM调制

scatterplot(y);%绘制星座图

可得到如下的图形:

可以看出,该图的缺点是其幅度没有进行规一化处理,如果我们对其按峰值功率1瓦进行规一化处理:

>>scale=modnorm(y,'peakpow',1);

y=scale*y;%规一化

再次输出星座图:

>>scatterplot(y);%绘制星座图

但此时还有不尽如人意的地方,就是:

(1)、信号点没有给出序号注释;

(2)、信号点太靠近边缘,幅度相位的坐标范围需要扩大。

为此,给出下面的代码:

>>%给定输出坐标范围,语法axis([xminxmaxyminymax])

axis([-11-11]);

%绘制序号注释使其靠近信号点

holdon;%可以连续绘图而不去掉原来的图形

forj=1:

length(y)%每个点循环

text(real(y(j)),imag(y(j)),[''num2str(j-1)]);

end%循环结束

holdoff;

可以看到图形变成了下面的形状:

至此,星座图绘制完成。

其中text语句的内容可通过查阅帮助知道:

>>helptext

TEXTTextannotation.

TEXT(X,Y,'string')addsthetextinthequotestolocation(X,Y)onthecurrentaxes,where(X,Y)isinunitsfromthecurrentplot.IfXandYarevectors,TEXTwritesthetextatalllocationsgiven.If'string'isanarraythesamenumberofrowsasthelengthofXandY,TEXTmarkseachpointwiththecorrespondingrowofthe'string'array.

意思是:

把'string'中的内容绘制在(X,Y)所代表的坐标上。

本例中,正交幅度调制QAM后的信号坐标点在图中是一个复数,实部是相位,虚部是幅度。

real(y(j)),imag(y(j))就是取第j个信号点的实部和虚部。

''num2str(j-1)是先输出一个空格,以让出点的位置,再在其右边输出j-1所代表的数字字符串。

三、实验内容

1、学习Matlab使用环境、图形输出的一般方法;

2、学习掌握信源产生、信道编码、调制、信道传输、解调、信道译码、差错比较等通信过程常用函数的使用;

3、学习plot、semilogy、title、xlabel、ylabel、axis、axes、hold、legend、subplot、scatter、scatterplot等图形输出函数的使用方法;

4、仿真比较几种2FSK、2PSK、QPSK、16PSK、16QAM等调制方法在不同信道参数下的误码性能;

5、仿真比较Hamming码不同码型的纠错性能,分析提高通信系统抗误码能力的方法。

四、实验步骤

1、打开Matlab程序,点击帮助菜单上的MatlabHelp栏,或按F1打开程序帮助,如图所示:

2、熟悉Matlab程序环境,练习plot、semilogy、title、xlabel、ylabel、axis、axes、hold、legend、subplot、scatter、scatterplot等图形输出函数的使用方法。

3、通过在命令行输入help‘command’和在帮助系统查询的方法学习下列函数的使用:

(1)rand、randint、wgn

(2)biterr

(3)encode、decode、convenc、vitdec、hammgen

(4)dpskdemod、dpskmod、fskdemod、fskmod、genqamdemod、genqammod、modnorm、pskdemod、pskmod、qamdemod、qammod

4、采用下列简化的通信系统模型建立Matlab仿真模型,对比不同调制解调方式在相同信道噪声功率下的误码率。

调制方式有:

2FSK、2PSK、QPSK、16PSK、16QAM等。

例如,我们需要仿真对比2FSK、2PSK调制抗噪声性能,可编写如下程序:

clear;%清除内存变量

M=2;

Fs=16;

nsamp=17;

freq_sep=8;

x=randint(5000,1,M);

y_fsk=fskmod(x,M,freq_sep,nsamp,Fs);

y_psk=pskmod(x,M);

N=10;

forj=1:

N

SNR=j;

y_fsk_noise=awgn(y_fsk,SNR-10*log10(Fs),'measured',[],'dB');

y_psk_noise=awgn(y_psk,SNR,'measured',[],'dB');

z_fsk=fskdemod(y_fsk_noise,M,freq_sep,nsamp,Fs);

z_psk=pskdemod(y_psk_noise,M);

[num_fsk(j),ber_fsk(j)]=biterr(x,z_fsk);

[num_psk(j),ber_psk(j)]=biterr(x,z_psk);

end

semilogy(1:

N,ber_fsk,'*-b');

holdon;

semilogy(1:

N,ber_psk,'d--k');

title('不同信噪比下2FSK和2PSK误码性能仿真');

legend('FSK','PSK');

xlabel('SNRdB');

ylabel('BER')

holdoff

可以看到输出结果为:

根据上述例子,通过阅读Matlab帮助,完成其它调制形式的性能仿真。

5、设通信系统采用QPSK调制,Hamming码纠错,仿真分析(7,4)、(15,11)、(31,26)Hamming码在不同信噪比下的纠错性能。

仿真方法是在数据调制之前,先进行纠错编码。

语法为:

编码:

code=encode(msg,n,k,'hamming')

译码:

msg=decode(code,n,k,'hamming')

五、实验报告要求

1、写出每个仿真程序的原理及其信号框图,给出完整的代码,注释应占整个代码2/3以上,仿真结果要用图形表示出来,图中应有明确的注释。

2、对仿真结果应利用所学知识给出完整、准确的分析。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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