




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 2010 届届毕业毕业生生 毕业论毕业论文文题题 目:目: turboturbo 码的编译码算法研究码的编译码算法研究 院系名称:院系名称: 信息工程学院信息工程学院 专业班级:专业班级: 电子信息工程电子信息工程 学生姓名:学生姓名: 学学 号号: 指导教师:指导教师: 教师职称:教师职称: 教授教授 2010 年年 6 月月 2 日日摘摘 要要在现代数字通信系统中,信道编码常用来保护系统免遭噪声和外界干扰,并用于降低系统的比特误码率,提高系统的可靠性。turbo码,由于性能接近香农理论限,在低信噪比的应用环境下比其他编码好,因而在第三代移动通信系统多种方案中,考虑将turbo码作为无线信
2、道的编码标准之一。本文讨论了turbo 码的编译码基本原理,对turbo 码的几种常用的编译码算法进行了分析,并在给出编译码器模型的基础上,用matlab语言实现了整个系统的计算机仿真并给出参考设计程序。关键词关键词:递归系统卷积码、turbo 码、 软判决viterbi 译码、交织器title: turbo code encoding and decoding algorithm abstractin modern digital communication systems, channel coding system used to protect against noise and in
3、terference, and used to reduce the systems bit error rate and improve system reliability. turbo code, as the performance approaches the shannon theoretical limit, the application of a low snr environment better than the other encodings, and thus the third generation mobile communication systems in a
4、 variety of programs, consider the turbo code as the wireless channel of the coding standard. this article discusses the basic principles of turbo codes encoding and decoding of turbo codes encoding and decoding of several commonly used algorithms are analyzed and presented codec based on the model,
5、 with the matlab language to implement the computer simulation of the system and to the reference design program.key words:recursive systematic convolutional code soft-decision viterbi decoding interleaver目目 次次1 引言.12 turbo 码概述 .22.1 turbo码简介 .22.2 turbo码的优缺点 .22.3 turbo码的发展 .33 turbo 码的编码原理 .43.1 编
6、码器组成 .43.2 编码原理 .63.3 编码算法 .74 turbo 码译码原理 .94.1译码器组成.94.2 译码原理.114.3 map(maximum a posteriori)算法.124.4log-map 算法和 max-log-map 算法 .144.5sova 算法.155 turbo 码的性能仿真 .165.1 仿真软件介绍 .165.2 仿真系统构建 .185.3 编码子系统 .185.4 译码子系统 .195.5 仿真结果与分析 .20结 论.24致 谢.25参考文献.26附 录.271 1 引言引言在数字通信系统中,根据不同的目的,编码可分为信源编码和信道编码。信源
7、编码是为了提高数字信号的有效性以及为了使模拟信号数字化而采取的编码。信道编码是为了降低误差率,提高数字通信的可靠性而采取的编码。数字信号在传输过程中,加性噪声、码间串扰等都会生产误码。为了提高系统的抗干扰性能,可以加大发射功率,降低接受设备本身的噪声,以及合理选择调制、解调方法等。此外,还可以采用信道编码技术。长期以来,编码界一直致力于寻找编码率接近香农理论极限值、误码率小、解码复杂度可以忍受的信道前向差错控制编码方法,提出了可重复解码的编码技术,包括乘积码、级联码、多级码及其推广。在重复解码、软入软出解码、递归系统卷积码和非均匀交织等概念的基础上,1993年c.berrou等在国际通信会议上
8、最先提出了turbo码,它是并行级联带反馈系统卷积码(parallel concatenation of recursivesystematic convolutional codes)的简称。仿真结果表明,在awgn 信道中,turbo 码的纠错性能接近香农极限。从此turbo码的研究成为了编码界的一个研究热点,并开始在各种通信系统中实现应用。matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用matlab产品的开放式结构,可以非常容易地对 matlab的功能进行扩充。matlab的数据
9、分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷,simulink是matlab提供的动态仿真工具,它采用模块组合的方法来创建动态系统的计算机模型,其最突出的特点就是它的开放性,用户可以通过s一函数定制自己的模块和模块库,本文本文首先介绍了turbo码编译码的基本原理以及研究较深的几种算法,在这个基础上使用matlab建立仿真模型,最后给出仿真结果。2 2 turboturbo 码概述码概述2.12.1 turboturbo 码简介码简介著名的shannon信道编码定理指出,每一信道都有一定的信道容量c,对任何rc的传信率,都存在有速率为r的码,用最大似然(ml)译码可
10、达到任意小的错误概率p。该定理包含两方面的含义:一是shannon用随机编码方式证明,当rc时,若n趋近于无穷,则使p趋近于0的好码是存在的;二是为了达到理论值,应该利用最大似然译码。turbo码由两个二元卷积码并行级联而成。turbo码编译码器采用流水线结构,其编译码基本思想是,采用软输入/软输出(siso)的迭代译码算法,编码时将短码构成长码,译码时再将长码转为短码。译码算法的特点是,利用两个子译码器之间信息的往复迭代递归调用,加强后验概率对数似然比,从而提高判决可靠性,turbo码由此而得名,这种算法也被称为最大后验概率(map)算法。由于turbo码很好地应用了shannon信道编码定
11、理中的随机性编译码条件,从而获得几乎接近shannon理论极限的译码性能。2.22.2 turboturbo 码的优缺点码的优缺点turbo码可以在译码复杂性与码率之间达到较好的平衡,而且在中高噪声的应用环境中,性能比以往其它信道编码好很多。通过数值模拟表明,在awgn 信道下,码率为1/2 的turbo码在达到误比特率(ber) 10-5时,信噪比仅为约0.7db。(这种情况下达到信道容量的理想信噪比值为0db),远远超过了其他的编码方式。其主要的不足之处是:(1)计算量大,要得到高码率往往需要很大的交织器;(2)由交织和交错译码造成的时延,使turbo码在某些对时延要求高的通信系统中的应用
12、受到限制;(3)理论分析困难,至今对于turbo码的译码复杂性、比特误码率,尚未形成完整的理论分析和估计。2.32.3 turboturbo 码的发展码的发展对turbo码的研究进展大体有三个方面:(1)主要涉及到turbo码理论的研究。大多数研究集中在算法的改进,包括分量码的选择,交织器的设计,译码算法的改进,终止技术等turbo码的各个环节,取得了大量的成果,为turbo码的实现和在其它领域的应用打下了坚实的基础。(2)随着turbo码技术的成熟,最新研究大多集中在turbo码和其它技术结合的应用上,并且取得了很大的进展。如turbo码和其它纠错码的级联,turbo码和调制技术的结合(即t
13、tcm技术),turbo码均衡技术,turbo码多用户检测技术等。(3)由于turbo码时延问题的限制,应用最先集中在对时延不敏感的场合,如卫星通信和一些非实时的场合。随着硬件技术的发展,turbo码在实时领域的应用成为可能,值得一提的是turbo码已经成为3g方案中高速数据的纠错技术之一,可见其应用的潜力是很大的。但turbo码在衰落信道中的应用还有很多问题需要解决,是目前研究的热点。turbo码理论的出现是信道编译码史上的一个里程碑。它可以相当接近信道容量的极限,在高速效据传递中有着传统码无可比拟的优势,以其优良的性能引起了广泛的重视。目前turbo码技术已经从理论研究和仿真实验开始走向应
14、用,其许多关键的技术已经有了多种改进的方案,使其性能更加提高,更有利于软件和硬件的实现。turbo码和其它技术的结合以及在其它领域的应用也是最近研究的热点,并取得了大量的成果。相信随着软件和硬件技术的发展,turbo码技术的时延和算法复杂性等问题会得到极大地改善,并逐步取代业已成熟的分组码和卷积码技术,而且还会进一步与其它的技术结合,广泛应用于数字通信的各个领域。3 3 turboturbo 码的编码原理码的编码原理 3.13.1 编码器组成编码器组成(1) 编码器结构turbo 码的基本思想是利用短码构造等效长度意义上的长码。turbo 码编码器是由两个反馈的系统卷积码编码器通过一个伪随机交
15、织器并行连接而成的,编码后的校验位经过删余阵,可以产生不同码率的码字。一个典型的 turbo 码编码器如图所示。图 3-1 编码器结构图编码是通过两个相同的编码器和一个交织器组成。第一个编码器直接对信源信息序列进行编码,第二个编码器则对经过交织器后的信息序列进行编码,交织器对输入的原信息序列进行随机交织后输出。在编码过程中,信息序列u=u1,u2.un经过个n位交织器,形成个新序列ui (长度与内容没变,但比特位置经过重新排列)。u与ui分别经由两个相同结构的子编码器(分量码编码器)编码,生成序列x1,x2。x1,x2再与未编码的序列经过复用,即生成turbo码序列x。在实际应用中,为了提高t
16、urbo码的码率,经常增加一个删余过程,对校验序列x1,x2进行删余,周期的删除一些校验位,形成新的校验序列,再与未编码序列经过复用调制后,生成turbo码序列x。(2) 子编码器子编码器(component encoder)也叫分量码编码器。一般一个 turbo 码编码器由两个(可以多个)子编码器和通过交织器的作用并行级联组成。子编1c2c码器的结构可以不同,但一般取相同结构,以简化译码。子码可以是卷积码或者是分组码,而同时 turbo 码中级联的两个子编码器必须是系统码,所以一般选择递归系统卷积码(rsc) 。(3) rsc 码rsc 码是与 turbo 码同时提出的一类新的递归型系统卷积
17、码,该码在高码率时比最好的 nsc(非系统卷积码)还要好。turbo 码既然要求采用系统码,理所当然就选上了递归型系统卷积码 rsc。rsc 与 nsc 的状态转移图对比如下图:图 3-2 rsc 与 nsc 的状态转移图(4) 交织器交织器在 turbo 码编码中的主要作用是减少校验比特间的相关性,进而在迭代译码过程中降低误比特。其基本的原则是:通过增加交织器的长度,可使译码性能得到提高,交织器应该使输入序列尽能地随机化,从而避免编码生成码字的信息序列交织后,编码仍旧生成低重码字,导致 turbo 码的自由距离减少。交织器有多种,本文中采用了伪随机交织器模块,伪随机交织器反映的实际上是一种映
18、射关系。其工作过程是:对于长为 n 的信息序列,首先标记每个比特的位置,然后生成 n 个0,1之间的随机数,按产生的顺序排列成序列 x,每个随机数都对应于信息序列中的信息比特。然后把 x 中元素按一定的规则重新排列得到新的序列 y,并按 y 中元素的顺序读出相应的信息比特,这样就完成了交织。比如随机序列0.7621 0.4565 0.0185 0.8214 0.4447,它对应信息序列 x 为 。将随机序列按升序排列得到0.0185 1d2d3d4d5d0.4447 0.4565 0.7621 0.8214,则现在对应的信息序列 y 为 3d5d2d 。这样,就完成了交织。1d4d3.23.2
19、 编码原理编码原理如果一个码率为的卷积码的生成矩阵为:n/1 (式 3-1)().()()(110dgdgdgdgn则其对应的递归系统卷积码的生成矩阵为: (式 3-2)()(.)()(1()(0101dgdgdgdgdgnsys如以生成矩阵为(也可以表示为 g1 1 0 )111 ()(332ddddddgsys1;1 1 1 1)的递归系统卷积码作为子码,它对应的 turbo 码的编码结构如图:图 3-3 turbo 码的编码结构图输入编码器的信息序列为,它一方面直接输入到进行编),.,(21kuuuu 1c码,生成系统序列和校验序列,另一方面,u 经过交织器后,输入到中sxpx12c进行
20、编码,产生另一个校验序列,这三个序列经复用单元复用后完成编码,px2得到发送序列。复用单元的作用是调整编码速率,并将并行数据变换为串行数y据流。通常系统序列全部传送,校验序列按照收缩矩阵收缩。图示 turbo 码编码器可以采用收缩矩阵将编码速率调整到 1/2,矩阵的每行对应一1001pp个子编码器,第一列和第二列分别对应子编码器输出的第偶数个码元和第奇数个码元。1 表示该码元需要传送,0 表示不需传送。如果称对原始信息序列编码为水平方向的编码,称对经过交织器后的信c息序列编码为垂直方向的编码。在每个方向上,个信息比特经过编码器输ck出为 (式 3-3).,.(,1kkxxxx 其中,或 tnk
21、kktnkkkkppuxxx),.,(),.,(1,1 ,2,1 ,xcxcx表示信息比特,表示与该信息比特对应的校验比特,校验比特数取kuvkp,决于系统卷积码的生成多项式。显然 (式 3-4)nvkkkpxvkvk2,1,211,传输前经过收缩,有一部分校验比特将不予传送,在接收端未被传送的比特位用零填充。从上面的介绍我们可以看到,turbo 码编码部分级联结构和交织器的共同作用,使 turbo 编码接近随机编码,从而保证了 turbo 码必定是一种好码。3.33.3 编码算法编码算法首先谈一下对生成多项式 g 的理解。 图 3-4 递归系统码对照递归系统卷积码的一般的编码结构图 3-4。
22、若,其中,21iiggg 1,m+1(其中 m 是寄存器的数目) 。是矩阵 g 的第一行,可以看成是对iig1应的图 3-4 中的反馈环支路;是矩阵 g 的第二行,可以看成对应的是输出ig2的支路。和分别对应两点的信息。无论还是中的后 mky11g21gkkad 和ig1ig2个信息位的每一位都分别对应一个寄存器。它们可以看成是标志着一种状态。第一行中的后 m 位表示产生反馈信息所用到的寄存器,比如说第 j1 位,ig1它对应于第 j 个寄存器,该位为 1 表示用到了该寄存器内的信息,即该寄存器有反馈到输出信息的那个加法器,为零则表示没有反馈回去。同理,中kaig2的后 m 位表示产生信息所用
23、到的寄存器。ky算法流程如下:(1) 对于 encoder1:dinput ;l_info=length(d) ;l_total=l_info + m ;goto (3) ;y(1,:)x ;y (2,:) y ;(2)对于 encoder2:dy(1,:) (alpha) ;alpha 为伪随机交织图样(是 l_total 列行向量)l_totallength(d) ;l_infol_total ;goto (3) ;y (3,:) y ;goto (4) 。(3) state 为一 m 列行向量。初始化为零 if l_info,k;kxkd elseif l_info 0 % unpunc
24、tured for i = 1:l_total for j = 1:3 en_output(1,3*(i-1)+j) = y(j,i); end endelse % punctured into rate 1/2 for i=1:l_total en_output(1,n*(i-1)+1) = y(1,i); if rem(i,2) % odd check bits from rsc1 en_output(1,n*i) = y(2,i); else % even check bits from rsc2 en_output(1,n*i) = y(3,i); end end end % anti
25、podal modulation: +1/-1en_output = 2 * en_output - ones(size(en_output); function y = rsc_encode(g, x, terminated)% encodes a block of data x (0/1)with a recursive systematic% convolutional code with generator vectors in g, and% returns the output in y (0/1).% if terminated0, the trellis is perfectl
26、y terminated% if terminated0 l_info = length(x); l_total = l_info + m;else l_total = length(x); l_info = l_total - m;end % initialize the state vectorstate = zeros(1,m); % generate the codewordfor i = 1:l_total if terminated0 & i0 & il_info % terminate the trellis d_k = rem( g(1,2:k)*state,
27、2 ); end a_k = rem( g(1,:)*d_k state, 2 ); output_bits, state = encode_bit(g, a_k, state); % since systematic, first output is input bit output_bits(1,1) = d_k; y(n*(i-1)+1:n*i) = output_bits;endfunction output, state = encode_bit(g, input, state)% this function takes as an input a single bit to be
28、encoded,% as well as the coeficients of the generator polynomials and% the current state vector.% it returns as output n encoded data bits, where 1/n is the% code rate. % the rate is 1/n% k is the constraint length% m is the amount of memoryn,k = size(g);m = k-1; % determine the next output bitfor i
29、=1:n output(i) = g(i,1)*input; for j = 2:k output(i) = xor(output(i),g(i,j)*state(j-1); end;end state = input, state(1:m-1);function l_all = logmapo(rec_s,g,l_a,ind_dec)% log_map algorithm using straightforward method to compute branch metrics% no approximation is used.% can be simplified to max-log
30、-map by using approximation ln(ex+ey) = max(x,y).% input: rec_s: scaled received bits. % rec_s = 0.5 * l_c * yk = ( 2 * a * rate * eb/n0 ) * yk% g: code generator for the component rsc code, in binary matrix form.% l_a: a priori info. for the current decoder, % scrambled version of extrinsic inftyo.
31、 of the previous decoder.% ind_dec: index of decoder. either 1 or 2. % encoder 1 is assumed to be terminated, while encoder 2 is open.% output: l_all: log-likelihood ratio of the symbols. complete information. % total number of bits: inftyo. + taill_total = length(rec_s)/2;n,k = size(g); m = k - 1;n
32、states = 2m; % number of states in the trellis % set up the trellisnext_out, next_state, last_out, last_state = trellis(g); infty = 1e10; % initialization of alphaalpha(1,1) = 0; alpha(1,2:nstates) = -infty*ones(1,nstates-1); % initialization of betaif ind_dec=1 beta(l_total,1) = 0; beta(l_total,2:n
33、states) = -infty*ones(1,nstates-1); elseif ind_dec=2 beta(l_total,1:nstates) = zeros(1,nstates);else fprintf(ind_dec is limited to 1 and 2!n);end % trace forward, compute alphafor k = 2:l_total+1 for state2 = 1:nstates gamma = -infty*ones(1,nstates); gamma(last_state(state2,1) = (-rec_s(2*k-3)+rec_s
34、(2*k-2)*last_out(state2,2). -log(1+exp(l_a(k-1); gamma(last_state(state2,2) = (rec_s(2*k-3)+rec_s(2*k-2)*last_out(state2,4). +l_a(k-1)-log(1+exp(l_a(k-1); if(sum(exp(gamma+alpha(k-1,:)1e-300) alpha(k,state2)=-infty; else alpha(k,state2) = log( sum( exp( gamma+alpha(k-1,:) ) ) ); end end tempmax(k) =
35、 max(alpha(k,:); alpha(k,:) = alpha(k,:) - tempmax(k);end % trace backward, compute betafor k = l_total-1:-1:1 for state1 = 1:nstates gamma = -infty*ones(1,nstates); gamma(next_state(state1,1) = (-rec_s(2*k+1)+rec_s(2*k+2)*next_out(state1,2). -log(1+exp(l_a(k+1); gamma(next_state(state1,2) = (rec_s(
36、2*k+1)+rec_s(2*k+2)*next_out(state1,4). +l_a(k+1)-log(1+exp(l_a(k+1); if(sum(exp(gamma+beta(k+1,:)mk1 path_metric(state,t+1)=mk0; mdiff(state,t+1) = mk0 - mk1; prev_bit(state, t+1) = 0; else path_metric(state,t+1)=mk1; mdiff(state,t+1) = mk1 - mk0; prev_bit(state,t+1) = 1; end endend % for decoder 1
37、, trace back from all zero state, % for decoder two, trace back from the most likely stateif ind_dec = 1 mlstate(l_total+1) = 1;else mlstate(l_total+1) = find( path_metric(:,l_total+1)=max(path_metric(:,l_total+1) );end % trace back to get the estimated bits, and the most likely pathfor t=l_total:-1
38、:1 est(t) = prev_bit(mlstate(t+1),t+1); mlstate(t) = last_state(mlstate(t+1), est(t)+1);end % find the minimum delta that corresponds to a compitition path with different info. bit estimation. % give the soft outputfor t=1:l_total llr = infty; for i=0:delta if t+il_total+1 bit = 1-est(t+i); temp_sta
39、te = last_state(mlstate(t+i+1), bit+1); for j=i-1:-1:0 bit = prev_bit(temp_state,t+j+1); temp_state = last_state(temp_state, bit+1); end if bit=est(t) llr = min( llr,mdiff(mlstate(t+i+1), t+i+1) ); end end end l_all(t) = (2*est(t) - 1) * llr;end function l_all = mapo(rec_s,g,l_a,ind_dec)% map algori
40、thm using straightforward method to compute branch metrics% no approximation is used.% can be simplified to max-log-map by using approximation ln(ex+ey) = max(x,y).% input: rec_s: scaled received bits. % rec_s = 0.5 * l_c * yk = ( 2 * a * rate * eb/n0 ) * yk% g: code generator for the component rsc
41、code, in binary matrix form.% l_a: a priori info. for the current decoder, % scrambled version of extrinsic inftyo. of the previous decoder.% ind_dec: index of decoder. either 1 or 2. % encoder 1 is assumed to be terminated, while encoder 2 is open.% output: l_all: log-likelihood ratio of the symbol
42、s. complete information. l_c=2;% total number of bits: inftyo. + taill_total = length(rec_s)/2;n,k = size(g); m = k - 1;nstates = 2m; % number of states in the trellis % set up the trellisnext_out, next_state, last_out, last_state = trellis(g); % initialization of alphaalpha(1,1) = 1; alpha(1,2:nsta
43、tes) = zeros(1,nstates-1);% initialization of betaind_dec=1;if ind_dec=1 beta(l_total,1) = 1; beta(l_total,2:nstates) = zeros(1,nstates-1); elseif ind_dec=2 beta(l_total,1:nstates) = zeros(1,nstates);else fprintf(ind_dec is limited to 1 and 2!n);end% trace forward, compute alpha% trace forward, comp
44、ute alphafor k = 2:l_total+1 for state2 = 1:nstates gamma = zeros(1,nstates); gamma(last_state(state2,1) = (1/(1+exp(l_a(k-1)*exp(-rec_s(2*k-3)+rec_s(2*k-2)*last_out(state2,2);%uk=+1 gamma(last_state(state2,2) = (exp(l_a(k-1)/(1+exp(l_a(k-1)*exp(rec_s(2*k-3)+rec_s(2*k-2)*last_out(state2,4);%uk=-1 al
45、pha(k,state2) = sum(gamma.*alpha(k-1,:); end normlizesum(k)=sum(alpha(k,:); alpha(k,:)=alpha(k,:)/normlizesum(k);end% trace backward, compute betafor k = l_total-1:-1:1 for state1 = 1:nstates gamma = zeros(1,nstates); gamma(next_state(state1,1) = (1/(1+exp(l_a(k+1)*exp(-rec_s(2*k+1)+rec_s(2*k+2)*nex
46、t_out(state1,2); gamma(next_state(state1,2) = (exp(l_a(k+1)/(1+exp(l_a(k+1)*exp(rec_s(2*k+1)+rec_s(2*k+2)*next_out(state1,4); beta(k,state1) = sum(gamma.*beta(k+1,:); end beta(k,:)=beta(k,:)/normlizesum(k+1);end% compute the soft output, log-likelihood ratio of symbols in the framefor k = 1:l_total
47、for state2 = 1:nstates gamma0 = exp(-rec_s(2*k-1)+rec_s(2*k)*last_out(state2,2)/(1+exp(l_a(k); gamma1 = exp(rec_s(2*k-1)+rec_s(2*k)*last_out(state2,4)*exp(l_a(k)/(1+exp(l_a(k); temp0(state2) = (gamma0 * alpha(k,last_state(state2,1) * beta(k,state2); temp1(state2) = (gamma1 * alpha(k,last_state(state
48、2,2) * beta(k,state2); end l_all(k) = log(sum(temp1) - log(sum(temp0);end % this script simulates the classical turbo encoding-decoding system. % it simulates parallel concatenated convolutional codes.% two component rate 1/2 rsc (recursive systematic convolutional) component encoders are assumed.%
49、first encoder is terminated with tails bits. (info + tail) bits are scrambled and passed to % the second encoder, while second encoder is left open without tail bits of itself.% random information bits are modulated into +1/-1, and transmitted through a awgn channel.% interleavers are randomly gener
50、ated for each frame.% log-map algorithm without quantization or approximation is used.% by making use of ln(ex+ey) = max(x,y) + ln(1+e(-abs(x-y),% the log-map can be simplified with a look-up table for the correction function.% if use approximation ln(ex+ey) = max(x,y), it becomes max-log-map.% clea
51、r all % write display messages to a text filediary turbo_logmap.txt % choose decoding algorithm dec_alg = input( please enter the decoding algorithm. (0:log-map, 1:sova) default 0 );if isempty(dec_alg) dec_alg = 0;end % frame sizel_total = input( please enter the frame size (= info + tail, default:
52、400) );if isempty(l_total) l_total = 400; % infomation bits plus tail bitsend % code generatorg = input( please enter code generator: ( default: g = 1 1 1; 1 0 1 ) );if isempty(g) g = 1 1 1; 1 0 1 ;end%g = 1 1 0 1; 1 1 1 1;%g = 1 1 1 1 1; 1 0 0 0 1; n,k = size(g); m = k - 1;nstates = 2m; %puncture =
53、 0, puncturing into rate 1/2; %puncture = 1, no puncturingpuncture = input( please choose punctured / unpunctured (0/1): default 0 );if isempty(puncture) puncture = 0;end % code raterate = 1/(2+puncture); % fading amplitude; a=1 in awgn channela = 1; % number of iterationsniter = input( please enter
54、 number of iterations for each frame: default 5 );if isempty(niter) niter = 5;end % number of frame errors to count as a stop criteriorferrlim = input( please enter number of frame errors to terminate: default 15 );if isempty(ferrlim) ferrlim = 15;end ebn0db = input( please enter eb/n0 in db : default 2.0 );if isempty(ebn0db) ebn0db = 2.0;end fprintf(nn-n); if dec_alg = 0 fprintf( = log-map decoder = n);else fprintf( = sova decoder = n);endfprintf( frame size = %
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省锦州市2024年七上数学期末监测试题含解析
- 2025届广东省东莞市物理九上期末联考模拟试题含解析
- 大运保安实习报告模板-1
- 大学生消费状况调研报告4篇
- 钢结构厂房竣工验收全流程
- 办公室岗位承诺书(共8篇)
- 高校教研室学科建设职责
- 创意教室空间设计
- 市场部管理岗位职责
- 肱骨骨折术后护理查房
- 2025年新版三级安全教育考试试题及答案
- 银行企业文化故事课件
- DB41-T 2881-2025 水利工程水文化建设导则
- 2026届四川省成都市高三上学期摸底测试(零诊)历史试卷(含答案)
- 公司技术项目管理办法
- 2025年公需科目考试试题及答案
- 2025至2030中国输送管道行业市场发展分析及竞争格局与投资管理报告
- 职业教育教材建设与管理研究
- 创新人才考试试题及答案
- 中国乙型肝炎病毒母婴传播防治指南(2024年版)解读
- 天津市和平区五十五中2025届数学八下期末调研试题含解析
评论
0/150
提交评论