📄 vitdec_test.m
字号:
source_code_data = randint(1,100);
SNR_dB = 5;
SNR = 10^(SNR_dB/10);
constraintlength = [7];
codegenerator = [133, 165, 171]; %r=1/3,生成多项式G1=133(8),G2=165(8),G3=171(8)
code_data = convenc(source_code_data, poly2trellis(constraintlength, codegenerator)); %内码卷积编码
code_data;
puncture_code_data = zeros(1, length(code_data)*2/3);
puncture_code_data(1:2:end) = code_data(1:3:end);
puncture_code_data(2:2:end) = code_data(3:3:end);
%function decode_data = viterbi_decoder(coded_data, tblen)
tblen = 5;
ucode_data = 1 - 2*puncture_code_data;
%ucode_data = puncture_code_data;
signal_pwr = sum(ucode_data.^2)./length(ucode_data);
noise_pwr = signal_pwr/SNR;
noise = sqrt(noise_pwr).*randn(1,length(ucode_data));
ucoded_data = ucode_data + noise;
insert_code_data = zeros(1, length(code_data));
insert_code_data(1:3:end) = ucoded_data(1:2:end);
insert_code_data(2:3:end) = 0;
insert_code_data(3:3:end) = ucoded_data(2:2:end);
insert_code_data;
%coded_data为输入的码, tblen是跟深
%constraintlength = [7];
%codegenerator = [133, 165, 171]; %r=1/3,生成多项式G1=133(8),G2=165(8),G3=171(8)
opmode = 'trunc'; %操作模式
decode_data = vitdec(insert_code_data, poly2trellis(constraintlength, codegenerator), tblen, opmode, 'unquant'); %维特比译码
error_count = sum(abs(source_code_data-decode_data))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -