⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sova_decode.txt

📁 是一个介绍软维特比解码的matlab软件程序
💻 TXT
字号:
%programs come for internet 1
function [p]=smld2(snr_in_dB) 
N=input('number'); 
Es=3; 
snr=10^(snr_in_dB/10); 
sgma=sqrt(1/(2*snr)); 
k=1; 
g=[1 0 1;0 0 1];  
for i=1:N, 
   temp=rand; 
   if (temp<0.25), 
      dsource1(i)=0; 
      dsource2(i)=0; 
   elseif (temp<0.5) 
      dsource1(i)=0; 
      dsource2(i)=1;  
   elseif (temp<0.75) 
      dsource1(i)=1; 
      dsource2(i)=0;  
   else  
      dsource1(i)=1; 
      dsource2(i)=1;  
   end; 
end; 
int=zeros(1,2*N); 
for o=1:N, 
   int(1,2*o-1)=dsource2(o); 
end; 
for b=1:N, 
   int(1,2*b)=dsource1(b); 
end; 
rrr=reshape(int,2,N); 
eee=rrr'; 
m=size(eee,1); 
y=zeros(1,m) 
for n=1:m 
   y(:,n)=eee(n,1) 
end; 
z=cnv_encd(g,k,y); 
tyu=length(z)/2; 
s=zeros(1,3*tyu); 
for i=1:m 
   s(:,3*i-2)=eee(i,2) 
end 
s(:,3*N+1)=0; 
s(:,3*(N+1)+1)=0; 
for j=1:tyu 
   s(:,3*j-1)=z(2*j-1); 
end; 
for k2=1:tyu 
   s(:,3*k2)=z(2*k2); 
end; 
uu=reshape(s,3,tyu); 
kk=uu'; 
n1=gngauss(sgma); 
n2=gngauss(sgma) 
for i=1:tyu 
   f(i)=bin2deci(kk(i,:)); 
   if ((f(i)>=3)&(f(i)<7)) 
   R(i)=sqrt(Es)*cos(2*pi*f(i)/8)+n1; 
   H(i)=sqrt(Es)*sin(2*pi*f(i)/8)+n2; 
   T(i)=pi+atan(H(i)/R(i)); 
   elseif f(i)<3 
   R(i)=sqrt(Es)*cos(2*pi*f(i)/8)+n1; 
   H(i)=sqrt(Es)*sin(2*pi*f(i)/8)+n2; 
   T(i)=atan(H(i)/R(i)); 
   else  
   R(i)=sqrt(Es)*cos(2*pi*f(i)/8)+n1; 
   H(i)=sqrt(Es)*sin(2*pi*f(i)/8)+n2; 
   T(i)=2*pi+atan(H(i)/R(i)); 
   end; 
end; 
cc=zeros(tyu,8); 
dd=zeros(tyu,8); 
for i=1:tyu 
   for j=0:7 
      cc(i,j+1)=2*pi*j/8-T(i); 
      dd=abs(cc); 
   end; 
   if dd(i,1)==min(dd(i,:)) 
      mm(i)=0; 
   elseif dd(i,2)==min(dd(i,:)) 
      mm(i)=1; 
   elseif dd(i,3)==min(dd(i,:)) 
      mm(i)=2; 
   elseif dd(i,4)==min(dd(i,:)) 
      mm(i)=3; 
   elseif dd(i,5)==min(dd(i,:)) 
      mm(i)=4; 
   elseif dd(i,6)==min(dd(i,:)) 
      mm(i)=5; 
   elseif dd(i,7)==min(dd(i,:)) 
      mm(i)=6; 
   else dd(i,8)==min(dd(i,:)) 
      mm(i)=7; 
   end; 
end; 
out=reshape(mm,tyu,1); 
k1=size(out,1); 
z=zeros(3,k1) ; 
for i=1:k1 
   m1=deci2bin(out(i,1),3);   
   z(:,i)=m1'; 
end; 
hh=reshape(z,1,3*k1); 
ty=zeros(k1-2,2); 
for i=1:k1-2 
   ty(i,2)=hh(:,3*i-2); 
end; 
for j=1:k1 
   hh(:,2*j-1)=[]; 
end; 
[ww,tt,ee]=viterbi(g,k,hh); 
for i=1:k1-2 
   ty(i,1)=ww(i) 
end; 
ip=reshape(eee,1,2*N) 
op=reshape(ty,1,2*N) 
numoferr=0; 
for w=1:2*N, 
   if ip(w)~=op(w) 
      numoferr=numoferr+1; 
   end; 
end; 
p=numoferr/(2*N) 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -