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

📄 main12.m

📁 tailbiting的卷积码的编码和译码
💻 M
字号:
clear all;
EbN0=4;
snr=EbN0;
%单个码块的信息长度
leng=256;
%码块总数
blocknum=10000;
%L至少取为编码器状态数的5~7倍
L=64;
%随机信息序列
msg=randint(1,leng*blocknum,2);
%网格图
t=poly2trellis(7,[171,133]);
code=zeros(blocknum,leng*2);
modu=zeros(1,leng*blocknum);
init_state=zeros(1,blocknum);
final_state=zeros(1,blocknum);
final=zeros(1,blocknum);
%编码并调制
for i=1:blocknum
%编码前首先得到各个码块的编码器初始状态(用每个码块的最后6比特计算,最后一比特为最高位)
    init_state(i)=msg(i*leng)*32+msg(i*leng-1)*16+msg(i*leng-2)*8+msg(i*leng-3)*4+msg(i*leng-4)*2+msg(i*leng-5);
    [code(i,:),final(i)]=convenc(msg((i-1)*leng+1:i*leng),t,init_state(i));
    [modu((i-1)*leng+1:i*leng),index]=modulation(code(i,:),24);
end
num=zeros(1,length(snr));
ratio=zeros(1,length(snr));
num1=zeros(1,blocknum);
ratio1=zeros(1,blocknum);
%加噪声,解调,译码,统计误码率
for i=1:length(EbN0)
    noise=awgn(modu,snr(i),'measured');
    demodu=demodulation(noise,index);
    for j=1:blocknum
%此处对解调结果取反译码与调制方式有关,如果0->-1,1->1需要取反,0->1,1->-1则不用取反
        decode=vitdec_new(-demodu((j-1)*leng*2+1:j*leng*2),t,L,leng);
        [num1(j),ratio1(j)]=biterr(decode,msg((j-1)*leng+1:j*leng));
        num(i)=num(i)+num1(j);
    end
    ratio(i)=num(i)/leng/blocknum;
end

⌨️ 快捷键说明

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