1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56YlZpx
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
随着现代通信的发展,人们对信息传输的可靠性和有效性的要求也越来越高。维特比译码算法被广泛的应用,因此如何提高维特比译码器的性能,降低译码器的功耗和面积是个重要的问题。卷积码是Elias等人在1955年提出的,是一种非常有前途的编码方法,尤其是在其最大似然译码算法-Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用。其中约束长度K=7,码率为1/2和1/3的卷积码己经成为商业卫星通信系统中的标准编码方法。在“航海家“以及“先驱者”等太空探测器上也都采用了卷积码作为其差错控制编码方法。在移动通信领域,GMS采用约束长度K=5,码率为1/2的卷积码;在IS-95中,上行链路中采用的是约束长度K=9,码率为1/3的卷积码,在下行链路中采用的是约束长度K=9,码率为1/2的卷积码。特别在第三代移动通信标准中也是以卷积码以及与卷积码相关的编码方法作为差错控制编码方案的。
4.部分源码
..............................................................
EbN0dB=-1:1:6;
%采用BPSK调制
EsN0dB=EbN0dB-10*log10(R);
N0=10.^(-EsN0dB/10);
sigma=sqrt(N0);
plot_EbNo =-1:1:6;
Plot_Pe = [];
Plot_Pe2= [];
x_num=100000;
G=[1 1 1;1 0 1];
for k=1:length(N0)
k
x = bin_generator(x_num);
x(find(x < 0)) = 0;
x(find(x > 0)) = 1;
%卷码编码
s=encode(G,1,x);
%BPSK经过AWGN信道
r=(2*s-1)+sigma(k)*randn(1,length(s));
r(2:10004)=0.25*r(1:10003)+0.75*r(2:10004);
r(find(r < 0)) = 0;
r(find(r > 0)) = 1;
%译码
dd=viterbi(G,1,r);
r=(2*x-1)+sigma(k)*randn(1,length(x));
r(2:10004)=0.25*r(1:10003)+0.75*r(2:10004);
r(find(r < 0)) = 0;
r(find(r > 0)) = 1;
%误码计数
Pe = length(find(x - dd))/x_num;
Pe2 = length(find(x - r))/x_num;
Plot_Pe = [Plot_Pe Pe];
Plot_Pe2= [Plot_Pe2 Pe2];
end
semilogy(plot_EbNo,Plot_Pe,'-bs',...
'LineWidth',2,...
'MarkerSize',8,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.0,0.9,0.0])
hold on
semilogy(plot_EbNo,Plot_Pe2,'-bo',...
'LineWidth',2,...
'MarkerSize',8,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0])
grid;
xlabel('Eb/No (dB)')
ylabel('BER')
legend('通过维特比译码','不加编译码');
14_002_m