资源简介

TCM Trellis Code Modulation Based on Matlab 网格编码调制基于Matlab 含PPT讲解 并且与QPSK和8PSK做比较 两种TCM结构

资源截图

代码片段和文件信息

clc
clear all;
%close all;
%System 1(1/2 convolutional encoder 2/3 TCM)
% 8PSK-TCM simulation

tx_num = 2000;
tx = randint(1tx_num);
%tx_num = 2000tx = randint(12000);% tx = [0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0];
Es = 1; Eb = Es/3;
Eb_dB = 10*log10(Eb);
SNR = (0:1:10); 
SNR_lin = 10.^(SNR / 10);
BER = zeros(1length(SNR));
%%%%%%%%%%%%%%%%%%%%%%%%TCM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
M = 8;
conv_input = tx(1:2:end);
uncode_data = tx(2:2:end);

% Convolutional encoder
trellis = poly2trellis(3[5 2][5]);
%trellis = poly2trellis(3[5 7][5]);
%trellis = poly2trellis(4[13 6][13]);
code_data = convenc(conv_inputtrellis);

% partitioning
partition=[pskmod(1M0‘gray‘) pskmod(7M0‘gray‘);
pskmod(2M0‘gray‘) pskmod(4M0‘gray‘);
pskmod(3M0‘gray‘) pskmod(5M0‘gray‘);
pskmod(0M0‘gray‘) pskmod(6M0‘gray‘)];

% TCM Modulation
txSig = zeros(1length(uncode_data));
for k = 1: length(uncode_data)
i = code_data(2*k-1)+code_data(2*k)*2;
txSig(1k)=partition(i+1uncode_data(k)+1);
end

for n = 1:length(SNR)
% Add Gaussian noise.
rxSig = awgn(txSigSNR(n)Eb_dB);
%rxSig = sqrt(Es/2) * txSig + sqrt(Eb/(2*SNR_lin(n))) * (randn(size(txSig)) + j * randn(size(txSig)));
%rxSig = awgn(txSigSNR(n));
% Demodulate.
rx = pskdemod(rxSig M0‘gray‘);

% Decode
r_code = zeros(1length(rx)*2);
r_uncode = zeros(1length(rx));
for i=1:length(rx)
switch rx(i)
case 0
r_code(12*i-1) = 1;
r_code(12*i) = 1;
r_uncode(1i) = 0;
case 1
r_code(12*i-1) = 0;
r_code(12*i) = 0;
r_uncode(1i) = 0;
case 2
r_code(12*i-1) = 1;
r_code(12*i) = 0;
r_uncode(1i) = 0;
case 3
r_code(12*i-1) = 0;
r_code(12*i) = 1;
r_uncode(1i) = 0;
case 4
r_code(12*i-1) = 1;
r_code(12*i) = 0;
r_uncode(1i) = 1;
case 5
r_code(12*i-1) = 0;
r_code(12*i) = 1;
r_uncode(1i) = 1;
case 6
r_code(12*i-1) = 1;
r_code(12*i) = 1;
r_uncode(1i) = 1;
case 7
r_code(12*i-1) = 0;
r_code(12*i) = 0;
r_uncode(1i) = 1;
otherwise
error(‘This is impossible‘)
end
%decrx1 = vitdec(r_codetrellis 2‘trunc‘ ‘hard‘);
decrx1 = vitdec(r_codetrellis length(r_code)/2‘trunc‘ ‘hard‘);
decrx(1:2:length(tx))= decrx1;
decrx(2:2:length(tx))= r_uncode;
end
[nErrors BER(1n)] = biterr(txdecrx);
end
figure(1)
semilogy(SNRBER‘r‘);grid on;
grid on;
xlabel(‘SNR (dB)‘); ylabel(‘BER‘);
title(‘TCM Modulation with a convolutional encoder in an AWGN channel‘); 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-28 14:46  final\
     文件      454144  2017-11-09 23:54  final\20MATLABTBER_TCM_QPSK_8PSK.ppt
     文件        2422  2017-10-18 09:01  final\tcm_simulation12.m
     文件        2414  2017-10-18 09:49  final\tcm_simulation12_bin.m
     文件        2278  2017-09-20 10:04  final\tcm_simulation23.m
     文件        1480  2017-11-08 12:03  final\tcm_unc8psk.m
     文件        1821  2016-11-15 10:06  final\tcm_unqpsk.m
     文件        1477  2015-11-22 14:53  final\theo_tcm_12.m
     文件        1614  2015-11-22 15:05  final\theo_tcm_23.m

评论

共有 条评论