www.gusucode.com > 无线通信FPGA设计源码程序 > 无线通信FPGA设计源码程序/matlab代码/matlab/c9/TCMcode.m

    snr=10;
N=input('number');   %数据长度
Es=3;
g=[1 0 1;0 0 1];  %卷积码编码器两路的冲激响应
x=round(rand(1,N)); %产生信源
for i=1:N/2; %串并变换
   x1(i)=x(2*i-1);
x2(i)=x(2*i);
end; 
z=cnvc(g,x1,x2);  %进行(3,2,3)卷积码编码,z为三行的向量
len=size(z,2);
zt=z.';
for i=1:len   %进行8PSK映射,得到信号点在星座图上的位置
   f(i)=bin2deci(zt(i,:)); 
   if ((f(i)>=3)&(f(i)<7))   %在星座图上处于0.75pi,pi,1.25pi和1.5pi的点
      R(i)=awgn(sqrt(Es)*cos(2*pi*f(i)/8),snr,'measured'); 
      H(i)=awgn(sqrt(Es)*sin(2*pi*f(i)/8),snr,'measured'); 
      T(i)=pi+atan(H(i)/R(i)); 
   elseif f(i)<3  %在星座图上处于0,0.25pi,0.5pi的点
      R(i)=awgn(sqrt(Es)*cos(2*pi*f(i)/8),snr,'measured'); 
      H(i)=awgn(sqrt(Es)*sin(2*pi*f(i)/8),snr,'measured'); 
      T(i)=atan(H(i)/R(i)); 
   else   %在星座图上处于1.75pi的点
      R(i)=awgn(sqrt(Es)*cos(2*pi*f(i)/8),snr,'measured'); 
      H(i)=awgn(sqrt(Es)*sin(2*pi*f(i)/8),snr,'measured'); 
      T(i)=2*pi+atan(H(i)/R(i)); 
   end; 
end;