Оценка сложности правильного декодирования БЧХ-кода при различном количестве ошибок
Количество Ошибок | 1 | 2 | 3 | 4 | 5 |
Elapsed time 1 | 0.007072 | 0.008531 | 0.005962 | 0.008444 | 0.007332 |
Elapsed time 2 | 0.002074 | 0.002121 | 0.005075 | 0.002937 | 0.005314 |
Elapsed time 3 | 0.006154 | 0.002785 | 0.004849 | 0.007655 | 0.003242 |
Elapsed time 4 | 0.005308 | 0.003570 | 0.002882 | 0.005458 | 0.002854 |
Elapsed time 5 | 0.003075 | 0.005445 | 0.006894 | 0.005937 | 0.007522 |
Среднее Elapsed time 1 | 0.004736 | 00.44904 | 0.005132 | 0.006086 | 0.005228 |
|
|
Исследование помехоустойчивости БЧХ-КОДА при 2-ФМН (BPSK).
1. clear all,clc,format long2. m=4;3. p=2;4. n=p^m-1; 5. t=3; 6. k=5;7. [z,t]=bchgenpoly(n,k);8. zv=z.x;9. %Генераторная матрица 10.G=zeros(k,n); 11.for i=1:k12.G(i,i:n-k+i)= zv;13.end14.B=G(:,n-k+1:n); 15.G=mod(mod(inv(B),2)*G,2); 16.%Формирование поля GF17.alpha=zeros(n+1,m);18.alpha(2:m+1,:)=eye(m);19.for i=m+2:n+1 20.alpha(i,:)=mod(alpha(i-m,:)+alpha(i-m+1,:),2); 21.end22.field = gftuple([-1:p^m-2]',m,p);23.alpha=field;24.zd=bi2de(field); 25.%Декодирование и вычисление Pe 26.ind=1;L=3e4;27.for SNR=0:828.Pe(ind)=0;29.for l=1:L 30.r=zeros(1,n);d=zeros(1,n);cbpsk=zeros(1,n); 31.e=zeros(1,n);32.mes=round(rand(1,k));33.c=mod(mes*G,2);34.for j=1:n 35.if c(j)==0 36. cbpsk(j)=-1;37.else38.cbpsk(j)=1;39.end 40.end 41.%%%%%%%%%%%%%%%%%Канал42.uvar=10^(-SNR/10)/2;43.cvar=uvar*n/k;44.Gn=sqrt(cvar)* randn(1,n); 45.cn=fliplr(cbpsk)+Gn; 46.for j=1:n47.if cn(j)<048.r(j)=0;49.else 50.r(j)=1; 51.end52.end53.% Количество ошибок в канале54.erc=sum(fliplr(r)-c); 55.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 56.%Вычисление синдрома57.S=zeros(2*t,m);s=zeros(1,2*t);58.for i=1:2*t59.for j=1:n 60.if r(j)==0 61.S(i,:)=S(i,:);62.else63.S(i,:)=mod(S(i,:)+alpha(rem(i*j-i,n)+2,:),2);64.end 65.end 66.s(i)=index3(S(i,:))-1;67.end68.%Декодирование. Алгоритм Берлекэмпа-Месси69.lmd=zeros(1,t);T=zeros(1,t); 70.lmd(1)=s(1); 71.if s(1)==-172.T(1)=-1;T(2)=0;73.else74.T(1)=mod(n-s(1),n); 75.end 76.for v=1:t-177. deltar=alpha(rem(s(2*v+1),n)+2,:);78.for j=1:v79.if lmd(j)==-1 | s(2*v+1-j)==-1 80.deltar=deltar; 81.else82.deltar=mod(deltar+alpha(rem(lmd(j)+s(2*v+1-j),n)+2,:),2);83.end84.end 85.%delta=index2(deltar)-1; 86.delta=index3(deltar,n,m,p)-1;87.V=lmd;88.if delta==-1 | T(v)==-189.lmd(v+1)=-1; 90.else 91.lmd(v+1)=rem(delta+T(v),n);92.end93.for i=2:v94.if delta==-1 | T(i-1)==-1 95.lmdr=alpha(rem(lmd(i),n)+2,:); 96.else97.lmdr=mod(alpha(rem(lmd(i),n)+2,:)+alpha(rem(T(i-1)+delta,n)+2,:),2);98.end99.%lmd(i)=index2(lmdr)-1; 100. lmd(i)=index3(lmdr,n,m,p)-1; 101. end102. if delta~=-1103. T(1)=mod(n-delta,n);104. for i=2:v+1 105. T(i)=mod(V(i-1)-delta,n); 106. end107. else108. T(v+2)=T(v);109. for j=1:v+1 110. T(j)=0; 111. end112. end113. end114. %Локализация ошибок Алгоритм Ченя 115. for i=0:n-1 116. xx=zeros(1,m);117. for j=1:t118. if lmd(j)==-1119. xx=xx; 120. else 121. xx=mod(xx+alpha(rem(lmd(j)+j*i,n)+2,:),2);122. end123. end124. if index3(xx,n,m,p)==1 125. e(mod(n-i,n)+1)=1; 126. end127. end128. %Исправление ошибок129. d=mod(r+e,2); 130. dmes=fliplr(d(:,n-k+1:n)); 131. %Вычисление Pe для моделирования132. for i=1:k133. if dmes(i)~=mes(i)134. Pe(ind)=Pe(ind)+1; 135. end 136. end137. end138. Pe(ind)=Pe(ind)/(k*L);139. ind=ind+1; 140. end 141. SNR=0:8;142. semilogy(SNR,0.5*erfc(sqrt(10.^(SNR/10))),'--');143. hold144. semilogy(SNR,Pe)
|
|