📄 ccber.m
字号:
%---------------------------------------------------------------------------
% Simulated performance of convolutional codes of various constraint
% lengths
% (To speed up simulation decrease NoBlks. This produces less accurate
% results.)
%-------------------------------------------------------------------
clear all
BlkSize = 4096;
NoBlks = 2000;
EbNodB = [0:0.5:7];
EbNo = 10 .^(EbNodB/10);
%-----------------------------------------------------------------
K=4
G_mask = [ bin2dec('1011') bin2dec('1111') ] ; % constraint length 4 code
Table = setup_cc(G_mask); % initialize table
for k=1:length(EbNodB)
sigma = sqrt(1/EbNo(k));
Errs = 0;
for i=1:NoBlks
TxInfo = floor(2*rand(BlkSize,1)); % generate data
TxCode = encode_cc(TxInfo, G_mask); % FEC encode
RxCode = 1- 2*TxCode; % BPSK modulate
RxCode = RxCode+sigma*randn(size(RxCode));
RxInfo = decode_cc(RxCode, Table); % decode
Errs = Errs + sum(abs(RxInfo-TxInfo));
end
NoErrs(k) = Errs
end
BER4 = NoErrs/NoBlks/BlkSize
%-----------------------------------------------------------------
K=5
G_mask = [ bin2dec('11001') bin2dec('10111') ] ; % constraint length 5 code
Table = setup_cc(G_mask); % initialize table
for k=1:length(EbNodB)
sigma = sqrt(1/EbNo(k));
Errs = 0;
for i=1:NoBlks
TxInfo = floor(2*rand(BlkSize,1)); % generate data
TxCode = encode_cc(TxInfo, G_mask); % FEC encode
RxCode = 1- 2*TxCode; % BPSK modulate
RxCode = RxCode+sigma*randn(size(RxCode));
RxInfo = decode_cc(RxCode, Table); % decode
Errs = Errs + sum(abs(RxInfo-TxInfo));
end
NoErrs(k) = Errs
end
BER5 = NoErrs/NoBlks/BlkSize
%-----------------------------------------------------------------------------------
K=6
G_mask = [ bin2dec('110101') bin2dec('101111') ] ; % constraint length 6 code
Table = setup_cc(G_mask); % initialize table
for k=1:length(EbNodB)
sigma = sqrt(1/EbNo(k));
Errs = 0;
for i=1:NoBlks
TxInfo = floor(2*rand(BlkSize,1)); % generate data
TxCode = encode_cc(TxInfo, G_mask); % FEC encode
RxCode = 1- 2*TxCode; % BPSK modulate
RxCode = RxCode+sigma*randn(size(RxCode));
RxInfo = decode_cc(RxCode, Table); % decode
Errs = Errs + sum(abs(RxInfo-TxInfo));
end
NoErrs(k) = Errs
end
BER6 = NoErrs/NoBlks/BlkSize
%---------------------------------------------------------------------------------------
K=7
G_mask = [ bin2dec('1101101') bin2dec('1001111')] ; % standard constraint length 7 code
Table = setup_cc(G_mask); % initialize table
for k=1:length(EbNodB)
sigma = sqrt(1/EbNo(k)); %assumes rate 1/2 code
Errs = 0;
for i=1:NoBlks
TxInfo = floor(2*rand(BlkSize,1)); % generate data
TxCode = encode_cc(TxInfo, G_mask); % FEC encode
RxCode = 1- 2*TxCode; % BPSK modulate
RxCode = RxCode+sigma*randn(size(RxCode));
RxInfo = decode_cc(RxCode, Table); % decode
Errs = Errs + sum(abs(RxInfo-TxInfo));
end
NoErrs(k) = Errs
end
BER7 = NoErrs/NoBlks/BlkSize
%----------------------------------------------------------------------------------
K=9
G_mask = [ bin2dec('100011101') bin2dec('110101111')] ; % standard constraint length 9 code
Table = setup_cc(G_mask); % initialize table
for k=1:length(EbNodB)
sigma = sqrt(1/EbNo(k)); %assumes rate 1/2 code
Errs = 0;
for i=1:NoBlks
TxInfo = floor(2*rand(BlkSize,1)); % generate data
TxCode = encode_cc(TxInfo, G_mask); % FEC encode
RxCode = 1- 2*TxCode; % BPSK modulate
RxCode = RxCode+sigma*randn(size(RxCode));
RxInfo = decode_cc(RxCode, Table); % decode
Errs = Errs + sum(abs(RxInfo-TxInfo));
end
NoErrs(k) = Errs
end
BER9 = NoErrs/NoBlks/BlkSize
%----------------------------------------------------------------------------------
clf
semilogy(EbNodB, BER4);
hold on
semilogy(EbNodB, BER5);
semilogy(EbNodB, BER6);
semilogy(EbNodB, BER7);
semilogy(EbNodB, BER9);
grid
xlabel('Eb/No (dB)')
ylabel('BER')
hold off
%---- End of File -----------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -