juanjibiayima.m

来自「卷积码编码及其维特比译码的C54x Simulator仿真试验及matlab实现」· M 代码 · 共 64 行

M
64
字号
%*************************
%卷积编译码的matlab实现
%卷积编译码(2,1,2);
%生成多项式(5,7);
%**********************
clear
clc
M=1000;%定义卷积编码个数
n=2;
k=1;
N=2;
gen=[5,7];
msg=randint(M,1,2);%随机生成N个未编码比特数据
fid=fopen('c:/Unencode_Data.txt','w');
for i=1:M
    fwrite(fid,13);
    fwrite(fid,10);
    fwrite(fid,msg(i)+48);
end
fclose(fid);%将未编码比特数据写入文件Unencode_Data.txt
tran_func=poly2trellis([3],gen);%生成转移函数矩阵
Encode_Data=convenc(msg,tran_func);
fid=fopen('c:/Encode_Data.txt','w');
for i=1:(n*M/k)
    fwrite(fid,13);
    fwrite(fid,10);
    fwrite(fid,Encode_Data(i)+48);
end
fclose(fid);%将卷积编码后的比特数据写入文件Encode_Data.txt
BPSK_Mod_Data=(1-2*Encode_Data);%BPSK调制 
fid=fopen('c:/BPSK_Mod_Data.txt','w');
for i=1:(n*M/k)
    fwrite(fid,13);
    fwrite(fid,10);
    if BPSK_Mod_Data(i)<0
        fwrite(fid,45);
    end
    fwrite(fid,BPSK_Mod_Data(i)+48);
end
fclose(fid);%将调制后的比特数据写入文件BPSK_Mod_Data.txt
Decode_Data=vitdec(BPSK_Mod_Data,tran_func,32,'trunc','unquant');
fid=fopen('c:/Decode_Data.txt','w');
for i=1:M
    fwrite(fid,13);
    fwrite(fid,10);
    fwrite(fid,Decode_Data(i)+48);
end
fclose(fid);
error=sum(abs(Decode_Data-msg),1);
subplot(211)
stairs(msg);
subplot(212)
stairs(Decode_Data);

% plot(Decode_Data-msg);






    
    

⌨️ 快捷键说明

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