移动通信综合实验16QAM调制解调与信道分析Word下载.docx

上传人:b****5 文档编号:19826679 上传时间:2023-01-10 格式:DOCX 页数:12 大小:217.67KB
下载 相关 举报
移动通信综合实验16QAM调制解调与信道分析Word下载.docx_第1页
第1页 / 共12页
移动通信综合实验16QAM调制解调与信道分析Word下载.docx_第2页
第2页 / 共12页
移动通信综合实验16QAM调制解调与信道分析Word下载.docx_第3页
第3页 / 共12页
移动通信综合实验16QAM调制解调与信道分析Word下载.docx_第4页
第4页 / 共12页
移动通信综合实验16QAM调制解调与信道分析Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

移动通信综合实验16QAM调制解调与信道分析Word下载.docx

《移动通信综合实验16QAM调制解调与信道分析Word下载.docx》由会员分享,可在线阅读,更多相关《移动通信综合实验16QAM调制解调与信道分析Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

移动通信综合实验16QAM调制解调与信道分析Word下载.docx

%%产生的随机二进制数据流

M=16;

%信号的星座尺寸

k=log2(M);

%每个符号的比特数

n=30000;

%处理的比特数目

numSamplesPerSymbol=1;

%过采样因子

%%创建二进制数据流作为列向量

rngdefault%使用缺省随机数发生器

dataIn=randi([01],n,1);

%产生的二进制矢量数据

%%将二进制信号转为整数值信号

dataInMatrix=reshape(dataIn,length(dataIn)/k,k);

%数据整形成二进制4元组

dataSymbolsIn=bi2de(dataInMatrix);

%转换为整数

使用MATLAB函数qammod()进行QAM的调制

%%使用16-QAM调制

dataMod=qammod(dataSymbolsIn'

M,'

bin'

);

%二进制编码、相位偏移=0

scatterplot(dataMod)

title('

未加噪声的星座图'

axis([-44-44])

在信号中加入噪声

%%添加高斯白噪声

EbNo=10;

%当信道SNR计算的EB/N0=10dB

snr=EbNo+10*log10(k)-10*log10(numSamplesPerSymbol);

%%将信号通过AWGN信道

rxSignal=awgn(dataMod,snr,'

measured'

显示星座图

%%使用scatterplot功能展示星座图

sPlotFig=scatterplot(rxSignal,1,0,'

g.'

holdon

scatterplot(dataMod,1,0,'

k*'

sPlotFig)

加了噪声的星座图'

使用MATLAB函数qamdemod()进行QAM的解调

%%16-QAM解调

dataSymbolsOut=qamdemod(rxSignal,M,'

%%将整数值信号转为二进制信号

dataOutMatrix=de2bi(dataSymbolsOut,k);

dataOut=dataOutMatrix(:

%返回的数据列矢量

计算解调后的误码率

%%计算系统的误码率(BER)

[numErrors,ber]=biterr(dataIn,dataOut);

fprintf('

\nThebinarycodingbiterrorrate=%5.2e,basedon%derrors\n'

...

ber,numErrors)

运行效果如图3

图3运行效果图

(2)QAM在高斯、莱斯和瑞利信道条件下的误码性能

思路:

先产生16QAM信号,然后先通过高斯信道引入噪声,再送入莱斯和瑞利信道后输出,通过给定不同的信噪比,画出误码率曲线。

效果结果如图4所示,代码见附录1。

图416QAM经过各信道的误码率

其中用到的各信道模型如下,并可以通过使用Y=FILTER(CHAN,X)来模拟信道Chanon对信号X的影响。

A.高斯信道:

AWGN:

在某一信号中加入高斯白噪声

y=awgn(x,SNR)在信号x中加入高斯白噪声。

信噪比SNR以dB为单位。

x的强度假定为0dBW。

如果x是复数,就加入复噪声。

y=awgn(x,SNR,SIGPOWER)如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;

如果SIGPOWER为'

,则函数将在加入噪声之前测定信号强度。

y=awgn(x,SNR,SIGPOWER,STATE)重置RANDN的状态。

y=awgn(…,POWERTYPE)指定SNR和SIGPOWER的单位。

POWERTYPE可以是'

dB'

或'

linear'

如果POWERTYPE是'

,那么SNR以dB为单位,而SIGPOWER以dBW为单位。

,那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。

B.瑞利信道:

RAYLEIGHCHAN(TS,FD,TAU,PDB)

TS—为输入信号的采样周期

FD—就是Doppler频偏,以Hz为单位,与速率的换算关系为v×

fc/c,fc是载频

TAU—输入的信道参数,一个向量,包含了各径的延时,以s为单位

PDB—输入的信道参数,一个向量,包含了各径的功率(当然是均值啦,实际产生的能量都是以此为均值的随机量),以dB为单位。

C.莱斯信道:

RICIANCHAN(TS,FD,K)

TS—是输入信号的采样时间,以秒为单位。

FD—是最大的多普勒频移,赫兹。

K—是线性尺度上的RiceK-因子。

(3)GMSK在高斯、莱斯和瑞利信道条件下的误码性能

先产生GMSK信号,然后先通过高斯信道引入噪声,再送入莱斯和瑞利信道后输出,通过给定不同的信噪比,画出误码率曲线。

效果结果如图5所示,代码见附录2。

图5GMSK经过各信道的误码率

本次程序设计的各信道模型用到了MATLAB自带的模型类。

A.GMSK生成器:

comm.GMSKModulator(BitInput,PulseLength,SamplesPerSymbol)

▷BitInput—指定是否将输入比特或整数。

默认是false。

当为false,step方法要求输入带符号的整数或双精度型数据值的-1或1的列向量。

当为true,step方法要求输入带符号的整数或双精度型数据值的0或1的列向量

▷PulseLength—脉冲长度,默认的是4。

指定的长度的高斯脉冲形状在符号间隔作为实的正整数,GMSK为4.

▷SamplesPerSymbol—每个输出符号的样本数目,默认的是8。

指定上采样系数输出为实数、正数,标量整数值。

上采样系数的数目是的step方法用于产生每个输入样本的输出采样。

B.高斯信道生成器:

comm.AWGNChannel('

NoiseMethod'

'

SNR'

▷NoiseMethod—噪声的方法

'

Signaltonoiseratio(Eb/No)'

,'

Signaltonoiseratio(Es/No)'

Signaltonoiseratio(SNR)'

或者,'

Variance'

▷SNR—信号功率与噪声功率之比的分贝值

C.莱斯信道生成器:

comm.RicianChannel(

SampleRate'

1e6,...

'

KFactor'

2.8,...

MaximumDopplerShift'

50,...

DopplerSpectrum'

doppler('

Bell'

8),...

RandomStream'

mt19937arwithseed'

Seed'

73,...

PathGainsOutputPort'

true);

▷SampleRate—输入信号取样速率(Hz),此属性的默认值是1Hz。

▷KFactor—RicianK因子(标量或矢量线性尺度),该位的默认值3

如果KFactor是一个标量,那么第一离散路径是具有Kras系数的Ricek-因子的莱斯衰落过程。

剩下的离散路径是独立的瑞利衰落过程。

如果KFactor是行向量,则对应于K因子向量的正元素的离散路径是具有由该元素指定的瑞斯K因子的莱斯衰落过程。

与K因子向量的零值元素相对应的离散路径是瑞利衰落过程

▷MaximumDopplerShift—最大多普勒频移(赫兹),属性的默认值是0.001赫兹。

多普勒频移适用于信道的所有路径。

当将最大值DoppReSHIFT设置为0时,通道对整个输入保持静态。

可以使用RESET方法生成新的通道实现。

▷DopplerSpectrum—多普勒频谱

指定所述多普勒频谱的形状(路径)的信道。

▷RandomStream—随机数流源,此属性的默认值是Globalstream。

将随机数流的源指定为Globalstream|mt19937ar的种子。

▷Seed—初始种子的mt19937ar随机数流,默认值73

▷PathGainsOutputPort—输出信道路径增益,此属性默认值是FALSE

将此属性设置为true输出通道路径增益的衰落过程的基础。

E.瑞利信道生成器:

comm.RayleighChannel(...

1e6,...

30,...

▷属性与莱斯信道相同

六、思考及体会

通过本次实验,对各信道的模型有了一定的了解,通过误码率曲线图直观的看到了不同信道对信号的影响,为之后的学习提供了形象的解释。

 

附录1

%%----------------------QAM----------------------%%

%信号的星座尺寸

%每个符号的比特数

%处理的比特数目

rngdefault%使用缺省随机数发生器

%产生的二进制矢量数据

dataMod=qam_mod(dataIn);

%数据调制

forN=-50:

20

%%高斯

%添加高斯白噪声

snr=N;

%将信号通过AWGN信道

rxSignal_Gauss=awgn(dataMod,snr,'

%信噪比以dB为单位

%16-QAM解调

dataOut_Gauss=qam_demod(rxSignal_Gauss);

%计算系统的误码率(BER)

[numErrors,ber]=biterr(dataIn,dataOut_Gauss);

%fprintf('

ber,numErrors)

plot(snr,ber,'

r^'

%%瑞利

%获得瑞利信道函数

Rayleigh_chan=rayleighchan(1/10000,100);

%采样频率1/10000,最大多普勒频移100

%将信号通过Rayleigh信道

rxSignal_Rayleigh=filter(Rayleigh_chan,rxSignal_Gauss);

dataOut_Rayleigh=qam_demod(rxSignal_Rayleigh);

[numErrors,ber]=biterr(dataIn,dataOut_Rayleigh);

g*'

%%莱斯

%获得莱斯信道函数

Rician_chan=ricianchan(1/10000,100,1);

%将信号通过Rician信道

rxSignal_Rician=filter(Rician_chan,rxSignal_Gauss);

dataOut_Rician=qam_demod(rxSignal_Rician);

[numErrors,ber]=biterr(dataIn,dataOut_Rician);

b.'

holdon

end

xlabel('

信噪比SNR'

),ylabel('

误码率BER'

legend('

高斯'

瑞利'

莱斯,K=5dB'

Location'

NorthEastOutside'

16QAM下的误码率--SXF'

holdoff

16QAM-调制信号星座图--SXF'

附录2

%%----------------------GMSK----------------------%%

n=300;

sps=8;

%每个符号的采样

%创建GMSK调制器

gmskMod=comm.GMSKModulator('

BitInput'

true,'

PulseLength'

4,'

SamplesPerSymbol'

sps);

%创建GMSK解调器

gmskDeMod=comm.GMSKDemodulator('

BitOutput'

%数据调制

modSigGMSK=step(gmskMod,dataIn);

%误码率器

hError=comm.ErrorRate('

ReceiveDelay'

gmskDeMod.TracebackDepth);

forN=-50:

%创建高斯信道器

hAWGN=comm.AWGNChannel('

snr);

rxSignal_Gauss=step(hAWGN,modSigGMSK);

%GMSK解调

dataOut_Gauss=step(gmskDeMod,rxSignal_Gauss);

errorStats=step(hError,dataIn,dataOut_Gauss);

fprintf('

Errorrate=%f\nNumberoferrors=%d\n'

errorStats

(1),errorStats

(2))

figure(3)

plot(snr,errorStats

(1),'

RayleighChan=comm.RayleighChannel(...

%将信号通过瑞利信道

[rxSignal_Rayleigh,PathGains1]=step(RayleighChan,rxSignal_Gauss);

%将通过AWGN信道的信号再通过瑞利信道modSigGMSK

dataOut_Rayleigh=step(gmskDeMod,rxSignal_Rayleigh);

errorStats=step(hError,dataIn,dataOut_Rayleigh);

errorStats

(1),errorStats

(2))

ricianChan=comm.RicianChannel(...

%将信号通过莱斯信道

[rxSignal_Rician,RicianPathGains1]=step(ricianChan,rxSignal_Gauss);

%将通过AWGN信道的信号再通过莱斯信道modSigGMSK

dataOut_Gauss=step(gmskDeMod,rxSignal_Rician);

GMSK下的误码率--SXF'

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

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1