《移动通信综合实验16QAM调制解调与信道分析报告.doc》由会员分享,可在线阅读,更多相关《移动通信综合实验16QAM调制解调与信道分析报告.doc(7页珍藏版)》请在课桌文档上搜索。
1、实验报告一、实验名称实验八 16QAM调制解调与信道分析二、实验目的掌握QAM及解调原理与特性了解星座图的原理及用途分析高斯、瑞利、莱斯信道三、实验内容 设计16QAM调制解调算法 比较GMSK和16QAM在高斯、莱斯和瑞利信道条件下的误码性能 撰写实验报告。四、实验原理正交振幅调制是用两个独立的基带数字信号对两个相互正交的同频载波进行抑制载波的双边带调制,利用这种已调信号在同一带宽内频谱正交的性质来实现两路并行的数字信息传输。正交振幅调制信号的一般表示式为16QAM是指包含16种符号的QAM调制方式.产生的框图如图1.图 1 16QAM调制相干解调原理如图2.图 2 16QAM解调五、实验步
2、骤 16QAM调制与解调算法先产生所需的二进制基带信号:% 产生的随机二进制数据流M = 16; %信号的星座尺寸k = log2; %每个符号的比特数n = 30000; %处理的比特数目numSamplesPerSymbol = 1; %过采样因子% 创建二进制数据流作为列向量rng default%使用缺省随机数发生器dataIn = randi; %产生的二进制矢量数据% 将二进制信号转为整数值信号dataInMatrix = reshapedataIn,length/k,k;%数据整形成二进制4元组dataSymbolsIn = bi2de; %转换为整数使用MATLAB函数qamm
3、od进行QAM的调制% 使用16-QAM调制dataMod = qammod; %二进制编码、相位偏移0scatterplottitleaxis在信号中加入噪声% 添加高斯白噪声EbNo = 10; % 当信道SNR计算的EB/N0=10dBsnr = EbNo + 10*log10 - 10*log10;% 将信号通过AWGN信道rxSignal = awgn;显示星座图% 使用scatterplot功能展示星座图sPlotFig = scatterplot;hold onscatterplottitle使用MATLAB函数qamdemod 进行QAM的解调% 16-QAM解调dataSym
4、bolsOut = qamdemod;% 将整数值信号转为二进制信号dataOutMatrix = de2bi;dataOut = dataOutMatrix; %返回的数据列矢量计算解调后的误码率% 计算系统的误码率BERnumErrors,ber = biterr;fprintf运行效果如图3图 3运行效果图 QAM在高斯、莱斯和瑞利信道条件下的误码性能思路:先产生16QAM信号.然后先通过高斯信道引入噪声.再送入莱斯和瑞利信道后输出.通过给定不同的信噪比.画出误码率曲线。效果结果如图4所示.代码见附录1。图 4 16QAM经过各信道的误码率其中用到的各信道模型如下.并可以通过使用Y =
5、FILTER来模拟信道Chanon对信号X的影响。A高斯信道:AWGN:在某一信号中加入高斯白噪声 y = awgn 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数.就加入复噪声。 y = awgn 如果SIGPOWER是数值.则其代表以dBW为单位的信号强度;如果SIGPOWER为measured.则函数将在加入噪声之前测定信号强度。 y = awgn 重置RANDN的状态。 y = awgn 指定SNR和SIGPOWER的单位。POWERTYPE可以是dB或linear。如果POWERTYPE是dB.那么SNR以dB为单位.而SIGPOWER以dB
6、W为单位。如果POWERTYPE是linear.那么SNR作为比值来度量.而SIGPOWER以瓦特为单位。B瑞利信道:RAYLEIGHCHANTS为输入信号的采样周期FD就是Doppler频偏.以Hz为单位.与速率的换算关系为vfc/c.fc是载频TAU输入的信道参数.一个向量.包含了各径的延时.以s为单位PDB输入的信道参数.一个向量.包含了各径的功率当然是均值啦.实际产生的能量都是以此为均值的随机量.以dB为单位。C莱斯信道:RICIANCHANTS是输入信号的采样时间.以秒为单位。FD是最大的多普勒频移.赫兹。K是线性尺度上的Rice K-因子。 GMSK在高斯、莱斯和瑞利信道条件下的误
7、码性能思路:先产生GMSK信号.然后先通过高斯信道引入噪声.再送入莱斯和瑞利信道后输出.通过给定不同的信噪比.画出误码率曲线。效果结果如图5所示.代码见附录2。图 5 GMSK经过各信道的误码率本次程序设计的各信道模型用到了MATLAB自带的模型类。A GMSK生成器:comm.GMSKModulatorBitInput指定是否将输入比特或整数。默认是false。当为false.step方法要求输入带符号的整数或双精度型数据值的-1或1的列向量。当为true.step方法要求输入带符号的整数或双精度型数据值的0或1的列向量PulseLength脉冲长度.默认的是4。指定的长度的高斯脉冲形状在符
8、号间隔作为实的正整数.GMSK为4.SamplesPerSymbol每个输出符号的样本数目.默认的是8。指定上采样系数输出为实数、正数.标量整数值。上采样系数的数目是的step方法用于产生每个输入样本的输出采样。B 高斯信道生成器:comm.AWGNChannelNoiseMethod噪声的方法Signal to noise ratio .Signal to noise ratio .Signal to noise ratio 或者.VarianceSNR信号功率与噪声功率之比的分贝值C 莱斯信道生成器:comm.RicianChannelSampleRate,1e6,. KFactor,2.
9、8,. MaximumDopplerShift,50,. DopplerSpectrum,doppler,.RandomStream,mt19937ar with seed, . Seed,73, . PathGainsOutputPort,true;SampleRate输入信号取样速率 .此属性的默认值是1Hz。KFactorRicianK因子.该位的默认值3如果KFactor是一个标量.那么第一离散路径是具有Kras系数的Rice k-因子的莱斯衰落过程。剩下的离散路径是独立的瑞利衰落过程。如果KFactor是行向量.则对应于K因子向量的正元素的离散路径是具有由该元素指定的瑞斯K因子的莱斯
10、衰落过程。与K因子向量的零值元素相对应的离散路径是瑞利衰落过程MaximumDopplerShift最大多普勒频移.属性的默认值是0.001赫兹。多普勒频移适用于信道的所有路径。当将最大值DoppReSHIFT设置为0时.通道对整个输入保持静态。可以使用RESET方法生成新的通道实现。DopplerSpectrum多普勒频谱指定所述多普勒频谱的形状的信道。RandomStream随机数流源.此属性的默认值是Global stream。将随机数流的源指定为Global stream| mt19937ar的种子。Seed初始种子的mt19937ar随机数流.默认值73PathGainsOutput
11、Port输出信道路径增益.此属性默认值是FALSE将此属性设置为true输出通道路径增益的衰落过程的基础。E 瑞利信道生成器:comm.RayleighChannel. SampleRate,1e6, . MaximumDopplerShift,30, . DopplerSpectrum,doppler,. RandomStream,mt19937ar with seed, . Seed,73, . PathGainsOutputPort,true;属性与莱斯信道相同六、思考及体会通过本次实验.对各信道的模型有了一定的了解.通过误码率曲线图直观的看到了不同信道对信号的影响.为之后的学习提供了形
12、象的解释。附录1% - QAM - %M = 16; %信号的星座尺寸k = log2; %每个符号的比特数n = 30000; %处理的比特数目numSamplesPerSymbol = 1; %过采样因子% 创建二进制数据流作为列向量rng default %使用缺省随机数发生器dataIn = randi; %产生的二进制矢量数据dataMod = qam_mod; % 数据调制for N = -50:20% 高斯% 添加高斯白噪声 snr = N;% 将信号通过AWGN信道 rxSignal_Gauss = awgn; %信噪比以dB为单位% 16-QAM解调 dataOut_Gaus
13、s = qam_demod;% 计算系统的误码率BER numErrors, ber = biterr;% fprintf plothold on% 瑞利% 获得瑞利信道函数 Rayleigh_chan = rayleighchan; %采样频率1/10000.最大多普勒频移100% 将信号通过Rayleigh信道 rxSignal_Rayleigh = filter;% 16-QAM解调 dataOut_Rayleigh = qam_demod;% 计算系统的误码率BER numErrors, ber = biterr;% fprintf plothold on% 莱斯% 获得莱斯信道函数
14、Rician_chan = ricianchan;% 将信号通过Rician信道 rxSignal_Rician = filter;% 16-QAM解调 dataOut_Rician = qam_demod;% 计算系统的误码率BER numErrors, ber = biterr;% fprintfplot hold onendxlabel,ylabel;legendtitlehold offscatterplottitleaxis附录2% - GMSK - %n = 300; %处理的比特数目sps = 8; %每个符号的采样% 创建二进制数据流作为列向量rng default %使用缺省
15、随机数发生器dataIn = randi; %产生的二进制矢量数据% 创建GMSK调制器 gmskMod = comm.GMSKModulator; % 创建GMSK解调器 gmskDeMod = comm.GMSKDemodulator;% 数据调制 modSigGMSK = step;% 误码率器 hError = comm.ErrorRate;for N=-50:20% 高斯 snr = N;% 创建高斯信道器 hAWGN = comm.AWGNChannelNoiseMethod,Signal to noise ratio ,SNR,snr; % 将信号通过AWGN信道 rxSigna
16、l_Gauss = step;% GMSK解调 dataOut_Gauss = step;% 计算系统的误码率BER errorStats = step; fprintfError rate = %fnNumber of errors = %dn,errorStats, errorStats figure plotsnr,errorStats,r hold on% 瑞利 RayleighChan = comm.RayleighChannel. SampleRate,1e6, . MaximumDopplerShift,30, . DopplerSpectrum,doppler,. Random
17、Stream,mt19937ar with seed, . Seed,73, . PathGainsOutputPort,true;% 将信号通过瑞利信道 rxSignal_Rayleigh, PathGains1 = step; %将通过AWGN信道的信号再通过瑞利信道 modSigGMSK% GMSK解调 dataOut_Rayleigh = step;% 计算系统的误码率BER errorStats = step; fprintfError rate = %fnNumber of errors = %dn, errorStats, errorStats plotsnr,errorStat
18、s,b. hold on% 莱斯 ricianChan = comm.RicianChannel. SampleRate,1e6,. KFactor,2.8,. MaximumDopplerShift,50,. DopplerSpectrum,doppler,. RandomStream,mt19937ar with seed, . Seed,73, . PathGainsOutputPort,true;% 将信号通过莱斯信道 rxSignal_Rician, RicianPathGains1 = step; %将通过AWGN信道的信号再通过莱斯信道 modSigGMSK% GMSK解调 dataOut_Gauss = step;% 计算系统的误码率BER errorStats = step; fprintfError rate = %fnNumber of errors = %dn, errorStats, errorStatsplotsnr,errorStats,g* hold onendxlabel,ylabel;legendtitle