频带+噪声(星座图,调制信号)]
function Code_,step); MM(6)=TMM(2)+d(3+1,step); MM(7)=TMM(2)+d(4+1,step); MM(8)=TMM(2)+d(7+1,step); PM(8,step+1)=0; PM(1,:)=[TPM(1,:),0]; PM(2,:)=[TPM(1,:),1]; PM(3,:)=[TPM(1,:),2]; PM(4,:)=[TPM(1,:),3]; PM(5,:)=[TPM(2,:),4]; PM(6,:)=[TPM(2,:),5]; PM(7,:)=[TPM(2,:),6]; PM(8,:)=[TPM(2,:),7]; %%%state 0 if(MM(1)>TMM(3)+d(2+1,step)), MM(1)=TMM(3)+d(2+1,step); PM(1,:)=[TPM(3,:),0]; end if(MM(1)>TMM(5)+d(4+1,step)), MM(1)=TMM(5)+d(4+1,step); PM(1,:)=[TPM(5,:),0]; end if(MM(1)>TMM(7)+d(6+1,st
function Code_in_bit=Receive(y); %TCM信号的接受,采用viterbi算法 %下面程序是根据8状态编码网格图编写 %y=[-+,-,--,,--,+]; figure(2) hold on grid on title('发送信号(有噪声干扰)的星座图:') Stars_plot(y); hold off seg=length(y)-2; PM=0; %路径存储器 MM=zeros(1,8); %路径度量存储器 % d每列表示8个状态点与当前输入值的欧氏距离 for cycle1=1:(seg+2), for cycle2=1:8, d(cycle2,cycle1)=Eu_distance(y(cycle1),cycle2-1); end end step=1; MM(1)=MM(1)+d(0+1,1); MM(2)=MM(2)+d(3+1,1); MM(3)=MM(3)+d(4+1,1); MM(4)=MM(4)+d(7+1,1); PM(4,2)=0; %扩展PM维数 PM(1,:)=[0,0]; PM(2,:)=[0,1]; PM(3,:)=[0,2]; PM(4,:)=[0,3]; step=2; TMM=MM; %先将前一级的路径度量值保存在TMM中 TPM=PM; %先将前一级的路径保存在TPM中 MM(1)=TMM(1)+d(0+1,2); MM(2)=TMM(1)+d(3+1,2); MM(3)=TMM(1)+d(4+1,2); MM(4)=TMM(1)+d(7+1,2); MM(5)=TMM(2)+d(0+1,2); MM(6)=TMM(2)+d(3+1,2); MM(7)=T
频带+噪声(星座图,调制信号)Receive.m] 来自淘豆网www.taodocs.com转载请标明出处.