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

📄 ccber.m

📁 自适应滤波原理_西蒙.赫金_Matlab_源代码 希望能够对学习自适应滤波技术的朋友有所帮助
💻 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 + -