无线通信信道编码matlab仿真_第1页
无线通信信道编码matlab仿真_第2页
无线通信信道编码matlab仿真_第3页
无线通信信道编码matlab仿真_第4页
无线通信信道编码matlab仿真_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上现给出循环码及卷积码的编解码程序,理解各程序,完成以下习题。将程序运行结果及各题目的解答写入word中:1.用matlab运行书上习题中的“clockcode.m” (a)说明(7,4)码的纠错检错方法 (b)在程序中标注“注释”处加上注释(英文或中文) (c)对于编码和未编码的情况,误比特率为1e-2、1e-3及1e-4时的Eb/N0分别是多少? (d)从物理意义上说明编码增益问题 (e)当采用(15,11)码时,观察与(7,4)码相比编码增益的变化。解:clockcode.m程序运行结果如下:(a)纠错方法:首先将接收且进行判决过后的值进行分组,每7个二进制码为一

2、组,视为一个向量。用这一向量乘以一致校验矩阵H,得到生成伴随式矢量s。若s=0,则认认为没有错,直接输出。若s与HT的某一列相同,即有着相同的错误图样,则将收到的该位取反(即进行模二加),进行纠错,将纠错后的结果输出。(b)clockcode.m程序:data1=rand(1,nd)>0.5; % 注释:产生信源数据x=encode(data1); %注释:对信源数据进行信道编码sigma=E/sqrt(2*SNR); %注释:能量归一化sigma1=E/sqrt(2*SNR*code_rate); %注释: 能量归一化data2(i)=-E+Gngauss(sigma); % 注释:对

3、未编码的信号进行BPSK调制,同时加入加性高斯白噪声data2(i)=E+Gngauss(sigma); % 注释:对未编码的信号进行BPSK调制,同时加入加性高斯白噪声data3(i)=-E+Gngauss(sigma1); % 注释:对编码后的信号进行BPSK调制,同时加入加性高斯白噪声data3(i)=E+Gngauss(sigma1); % 注释:对编码后的信号进行BPSK调制,同时加入加性高斯白噪声demodata1=data2 > 0; % 注释:过零比较判决,大于零判为1码,反之判为0码noe2=sum(abs(data1-demodata1); % 注释:统计误码个数no

4、d2=length(data1); % 注释:统计发送的码的个数ber(snr_num) = noe/nod; %注释:误码率=误码个数/发送个数encode.m程序:temp=data1(4*i-3:4*i); %注释:从data1(信源)中取数,每次取4个cyctemp=temp*G; %注释:结合下一条语句完成对4位二进制数的编码cyctemp=mod(cyctemp,2); %注释:结合上一条语句完成对4位二进制数的编码;前一条完成了x=uG,本条将生成的x变成二进制的结果encode(7*i-6:7*i)=cyctemp; %注释:将编出的7位码存放到输出数组中decode.m程序:

5、temp = x(7*j-6:7*j); %注释:从待译码的序列中取出7个数s=temp*Ht; %注释:利用一致校验矩阵生成生成伴随式矢量if(s = Ht(k,:) %注释:若S和Ht中的某一行相同,即有着相同的“错误图样”temp(k)=mod(temp(k)+1,2); %注释:就将收到的某一位进行模2加,进行纠错。decode(1,4*i-3:4*i)=decode1(1,7*i-6:7*i-3); %注释:将完成译码的值输出(c)将Eb/N0总结如下表Eb/N0(dB)未编码经过编码1e-24.34.51e-36.56.81e-48.38.2(d)如下图:图中的Gcode即为编码增

6、益,它表示了在相同的误码率下,经过编码的信息需要更低的信噪比就可以被正确的接收。相比于没有编码的情况,接收端相当于获得了Gcode这样一个数量的增益。(e)2.针对题目1中的clockcode.m, (a)若信道使信号幅度呈瑞利衰落,画出编码与未编码的Eb/N0-误比特率曲线,说明与题目1观察结果的异同,并说明原因。 (b)若信道使信号幅度呈莱斯衰落,画出编码与未编码的Eb/N0-误比特率曲线,更改K值的大小,观察曲线的现象,能得出什么结论。解:(a)改写clockcode.m程序,另存为clockcode_reyleigh.m。主程序中将高斯信道的部分改为如下的瑞利信道: for i=1:n

7、d n = 1/sqrt(2)*randn(1,nd) + 1j*randn(1,nd); h = 1/sqrt(2)*randn(1,nd) + 1j*randn(1,nd); % Rayleigh channel if (data1(i)=0), data2(i)=-E.*h(i)+ sigma.*n(i); % 注释:对未编码的信号进行BPSK调制,同时通过瑞利信道 data2(i)=data2(i)./h(i); else data2(i)=E.*h(i) + sigma.*n(i); % 注释:对未编码的信号进行BPSK调制,同时通过瑞利信道 data2(i)=data2(i)./h

8、(i); end; end; n=zeros(1,nd); h=n; %清空h与n for i=1:length(x) n = 1/sqrt(2)*randn(1,i) + 1j*randn(1,i); h = 1/sqrt(2)*randn(1,i) + 1j*randn(1,i); % Rayleigh channel if (x(i)=0), data3(i)=-E.*h(i)+ sigma.*n(i); % 注释:对编码后的信号进行BPSK调制,同时通过瑞利信道 data3(i)=data3(i)./h(i); else data3(i)=E.*h(i) + sigma.*n(i);

9、% 注释:对编码后的信号进行BPSK调制,同时通过瑞利信道 data3(i)=data3(i)./h(i); end; end;仿真结果如下(k=10)K=5时:K=20时:可以得到两点结论:(1) 和高斯信道相比,经历瑞利衰落的信道在相同的信噪比下误码率会高很多。(2) 和高斯信道相比,经历瑞利衰落的信道经过编码会获得更高的编码增益。(b)改写clockcode.m程序,另存为clockcode_rician.m。主程序中将高斯信道的部分改为如下的瑞利信道: n = 1/sqrt(2)*randn(1,nd) + 1j*randn(1,nd); h = 1/sqrt(2)*randn(1,n

10、d) + 1j*randn(1,nd); % Rayleigh channel h1=sqrt(K/(K+1) + sqrt(1/(K+1).*h; for i=1:nd if (data1(i)=0), data2(i)=-E.*h1(i)+sigma.*n(i); % 注释:对未编码的信号进行BPSK调制,同时经历赖斯信道 data2(1)=data2(1)./h1(i); else data2(i)=E.*h1(i)+sigma.*n(i); % 注释:对未编码的信号进行BPSK调制,同时经历赖斯信道 data2(1)=data2(1)./h1(i); end; end; n = 1/s

11、qrt(2)*randn(1,length(x) + 1j*randn(1,length(x); h = 1/sqrt(2)*randn(1,length(x) + 1j*randn(1,length(x); % Rayleigh channel h1=sqrt(K/(K+1) + sqrt(1/(K+1).*h; for i=1:length(x) if (x(i)=0), data3(i)=-E.*h1(i)+sigma.*n(i); % 注释:对编码后的信号进行BPSK调制,同时经历赖斯信道 data3(i)=data3(i)./h1(i); else data3(i)=E.*h1(i)

12、+sigma.*n(i); % 注释:对编码后的信号进行BPSK调制,同时经历赖斯信道 data3(i)=data3(i)./h1(i); end; end;仿真结果如下:可以发现,与瑞利信道相比,在信噪比下,赖斯信道中的误码率更低,这是因为在赖斯信道中存在一个直射分量(本例中,K=10)。同时,与瑞利信道类似的,经历赖斯信道的通信经过编码后也会获得更高的编码增益。3bpskh.m为(2,1,7)卷积码采用硬判决译码时在AWGN中的误比特性能的仿真主程序,用matlab运行主程序bpskh.m,将运行结果写入word文档中,并回答以下问题(tblen为回溯长度):(a)在标识注释处注释(中文或

13、英文)(b)在误比特率Pb=10-5处,硬判决的编码增益(与未编码比较)(c)详细的解释以下函数(包括函数用法,意义,参数设置等方面)u trellis = poly2trellis(constlen, codegen)u expVitBER = bercoding(EbNo, 'conv', 'hard', codeRate, dspec)、msg_rx = awgn(msg_tx, EsN0-10*log10(1/codeRate)u hMod = modem.pskmod('M', M, 'PhaseOffset', pi/

14、4, 'SymbolOrder', 'Gray', 'InputType', 'Bit')u msg_tx = modulate(hMod, msg_enc)u hDemod = modem.pskdemod('M', M, 'PhaseOffset', pi/4, 'SymbolOrder', 'Gray', 'OutputType', 'Bit')u msg_demod = demodulate(hDemod, msg_rx); (

15、d)要保证性能没有显著下降,tblen至少应为多少;解:程序运行结果如下图:(a)trellis = poly2trellis(constlen, codegen); %注释:生成一个包含有编码器信息结构体dspec = distspec(trellis, 7); %注释:由上一语句的结果计算编码器的最小距离等信息,同样也会生成一个结构体depecexpVitBER = bercoding(EbNo, 'conv', 'hard', codeRate, dspec); %注释:得到在Eb/No的信噪比下,采用卷积码编码,硬判决,在加性高斯白噪声信道中 %的误码率

16、的上界或者是估计值。rand('state', seed(1); randn('state', seed(2); %注释:使用种子数生成一个均匀分布的随机数,一个正态分布的随机数msg_enc = convenc(msg_orig, trellis); %注释:将信源序列进行卷积码的编码,编码器的参数由第二个函数参数trellis决定。hMod = modem.pskmod('M', M, 'PhaseOffset', 0, . 'SymbolOrder', 'Gray', 'InputTy

17、pe', 'Bit'); %注释:生成一个调制的“模型”hMod,该模型可供后面的modulate函数调用。 %具体的,生成模型为二进制的,不带相位偏 %移,符号顺序采用格雷码,输入按照比特来 %处理的PSK调制器msg_tx = modulate(hMod, msg_enc); %注释:对卷积码编码后的序列进行PSK调制。msg_rx = awgn(msg_tx, EsN0-10*log10(1/codeRate); %注释:对调制后的信号加入高斯白噪声。hDemod = modem.pskdemod('M', M, 'PhaseOffset&

18、#39;, 0, . 'SymbolOrder', 'Gray', 'OutputType', 'Bit'); %注释:生成一个解调的“模型”hDemod,该模型可供后面的modulate函数调用。 %具体的,生成一个二进制的,不带相位偏移 %,符号顺序采用格雷码,输入按照比特来处 %理的PSK解调器。msg_demod = demodulate(hDemod, msg_rx); %注释:用hDemod对收到的信号msg_rx解调。msg_dec = vitdec(msg_demod, trellis, tblen, 'c

19、ont', 'hard'); %注释:对解调的信号进行维特比硬译码BE_count(i) = length(find(msg_orig(1:end-tblen)= msg_dec(1+tblen:end); %注释:统计误码BE_rate_count(i)=BE_count(i)/numSymb; %注释:计算误码率(b)由于程序中未编码的情况下无法达到10-5的误码率,故仅能观察到在10-4情况下的编码增益,在10-4情况下,可以获得大约2.5dB的编码增益。(c)函数解释:u trellis = poly2trellis(constlen, codegen)函数将用

20、于描述卷积码的多项式转化成为。l 输入参数:constlen:约束长度,说明了编码器内存储的信息的长度,这个长度包含了当前的输入比特 codegen:成为卷积码的生成多项式,描述了卷积码编码器的输入输出关系,该参数为八进制。l 输出参数:该函数返回一个结构体(该例中结构体名称为trellis),结构体中描述了编码器的输入参数的个数,输出参数的个数,可能有的状态数,当前状态-下一个状态的组合,当前状态-当前输入的组合。l 本例中,通过实际编码器的参数我们可以得知该编码器的结构为:u expVitBER = bercoding(EbNo, 'conv', 'hard'

21、;, codeRate, dspec)、msg_rx = awgn(msg_tx, EsN0-10*log10(1/codeRate)函数返回了在使用PSK调制的二进制卷积码在加性高斯白噪声信道中指定的信噪比下传输的误码率的上限或者是估计值。l 输入参数:EbNo以dB形式表示的信噪比conv表明使用的是卷积码hard表示使用硬判决codeRate为卷积码的码率dspec是一个结构体,其中包含了码的距离等信息u hMod = modem.pskmod('M', M, 'PhaseOffset', pi/4, 'SymbolOrder', '

22、;Gray', 'InputType', 'Bit')此函数生成一个调制器的模型,该模型可以被modulate函数调用。l 输入参数:'M', M,设定了调制的进制,M值在程序中设定为2,设定的调制器为二进制调制'PhaseOffset', pi/4 :调制器的星座图有Pi/4的相位偏移。'SymbolOrder', 'Gray':符号顺序采用格雷码'InputType', 'Bit':调制器的输入是按照比特来处理的。u msg_tx = modulate(h

23、Mod, msg_enc)将msg_enc按照hMod模型的参数进行调制。l 输入参数hMod:为一个调制器的模型,由上一条语句“uhMod = modem.pskmod”生成msg_enc:待调制的基带信号,对于一路信号,需要的是一个列向量。u hDemod = modem.pskdemod('M', M, 'PhaseOffset', pi/4, 'SymbolOrder', 'Gray', 'OutputType', 'Bit') 此函数生成一个PSK解调器的模型,该模型可以被modulate

24、函数调用。l 输入参数:'M', M,设定了解调的进制,M值在程序中设定为2,设定的调制器为二进制调制'PhaseOffset', pi/4 :解调器的星座图有Pi/4的相位偏移。'SymbolOrder', 'Gray':符号顺序采用格雷码'InputType', 'Bit':解调器的输入是按照比特来处理的。u msg_demod = demodulate(hDemod, msg_rx); 将msg_rx按照hDemod模型中给出的参数进行解调。l 输入参数msg_rx:待解调的列向量。hDemo

25、d:解调器模型。(d)tblen=16的情况:可以看到仿真结果与理论值有着较大偏移。tblen=24时:tblen=20:故需要回溯长度tblen至少为24。4bpsks.m为(2,1,7)卷积码采用软判决译码时在AWGN中的误比特性能的仿真主程序,用matlab运行主程序bpsks.m,将运行结果写入word文档中,并回答以下问题(tblen为回溯长度):(a)在标识注释处注释(中文或英文)(b)在SNR=4dB时,要保证仿真精度,大概需要至少仿真多少个码字?(c)在误比特率Pb=10-5处,2比特软判决的编码增益(与未编码比较)?(d)在误比特率Pb=10-5处,3比特软判决的编码增益(与

26、未编码比较)?解:程序运行结果:(a)程序注释如下:trellis = poly2trellis(constlen, codegen); %注释:生成一个包含有编码器信息结构体dspec = distspec(trellis, 7); %注释:由上一语句的结果计算编码器的最小距离等信息,同样也会生成一个结构体depecexpVitBER = bercoding(EbNo, 'conv', 'soft', codeRate, dspec); %注释:%注释:得到在Eb/No的信噪比下,采用卷积码编码,软判决,在加性高斯白噪声信道中的误码率的上界或者是估计值。ran

27、d('state', seed(1); randn('state', seed(2); %注释:使用种子数生成一个均匀分布的随机数,一个正态分布的随机数msg_orig = randi(0 1, numSymb, 1); %注释:生成信源,一个列向量。msg_enc = convenc(msg_orig, trellis); %注释:使用trellis对信源进行卷积码的编码。hMod = modem.pskmod('M', M, 'PhaseOffset', 0, . 'SymbolOrder', 'Gray', 'InputType', 'Bit'); %注释:生成一个调制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论