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

📄 turbo_sccc.m

📁 国外著名通信教材附带的matlab源码 覆盖编码
💻 M
字号:
% ##############################################################################% ##  turbo_sccc.m : Turbo-Decodierung von zwei seriell verketteten           ##% ##                 Faltungscodes                                            ##% ##                 Decodieralgorithmen koennen speziell angewaehlt werden   ##% ##                 aeusserer Code ist terminiert, Eingangssequenz nicht     ##% ##                 interleaved                                              ##% ##############################################################################%% function  [L_info[,L_code_1[,L_code_2]]] = turbo_sccc(signal,codes,num_it,alg)%% ------------------------------------------------------------------------------% EINGABE:%        signal    :  Struktur mit folgenden Elementen%           sig    :  Empfangssignal%%        codes     : Struktur mit den Elementen code_1 ... code_num_codes,%           code_i      : Struktur des Codes i mit folgenden Elementen%           trellis_out : Beschreibung der Trellisstruktur, Codewoerter fuer%                         jeden Zweig%           trellis_next: Folgezustand im Trellis%           num_state   : Anzahl der Trellis Zustaende des Codes%           block_len   : Anzahl der Codewoerter pro Rahmen%           word_len    : Anzahl der Bit pro Codewort%           term        : term==1 fuer terminierten Trellis, ansonsten%                         nicht terminiert%           P           : Vektor mit der punktierten Ausgangssequenz im%                         codierten Bitstream%                         (enthaelt die Positionen der uebertragenen Symbole%                          im nichtpunktierten Strom)%           IL          : Vektor mit der Interleaversequenz%           num_it      : Anzahl der Iteration%           alg         : String, der den Decodieralgorithmus festlegt%                         'map','log_map','max_log_map'% ------------------------------------------------------------------------------% AUSGABE:%        L_info         : Matrix, die in jeder Spalte die Info LLRs%                         des Decodierdurchgangs enthaelt%        L_code_1       : Matrix, die in jeder Spalte die Codeworte%                         des aeusseren Codes enthaelt%                         nach jedem Decodiervorgang (optional)%        L_code_2       : Matrix, die in jeder Spalte die Codeworte%                         des inneren Codes enthaelt%                         nach jedem Decodiervorgang (optional)%-------------------------------------------------------------------------------% ANMERKUNGEN:%   - benoetigt Datei: map%                      log_map%                      max_log_map%-------------------------------------------------------------------------------%% Copyright 2001 Volker Kuehn%-------------------------------------------------------------------------------function   [L_info,L_code_1,L_code_2] = turbo_sccc(signal,codes,num_it,alg)%-------------------------------------------------------------------------------% Initialisierungin1.L_a        = zeros(codes.code_1.block_len,1);in1.last_state = 0;in2.L_a        = zeros(codes.code_2.block_len,1);in2.last_state = 0;% Einfuegen von Dummies an den punktierten Stellen fuer den inneren Codein2.sig                 = zeros(codes.code_2.block_len*codes.code_2.word_len,1);in2.sig(codes.code_2.P) = signal.sig;in1.sig                 = zeros(codes.code_1.block_len*codes.code_1.word_len,1);L_a = zeros(codes.code_2.block_len,1);L_info = zeros(codes.code_1.block_len,1);if (nargout==2)  L_code_1 = zeros(codes.code_2.block_len,1);endif (nargout==3)  L_code_2 = zeros(codes.code_2.block_len*codes.code_2.block_len,1);end% Iterative Decodierungfor it = 1:num_it  in2.L_a = L_a;  % Innerer Code  if (nargout==3)    eval(['[L_xy,L_code_2(:,it)] = ' alg '(in2,codes.code_2);']);  else    eval(['L_xy = ' alg '(in2,codes.code_2);']);  end  % Generierung und De-Interleaving der extrinsischen Information  tmp(codes.IL) = L_xy - in2.L_a;       % Deinterleaver  in1.sig(codes.code_1.P) = tmp(:);     % Einfuegen von Dummies an den  % punktierten Stellen fuer den aeusseren Code  % aeusserer Code  eval(['[L_info(:,it),L_xy] = ' alg '(in1,codes.code_1);']);  if (nargout==2)    L_code_1(:,it) = L_xy;  end  % Generierung und De-Interleaving der extrinsischen Information  L_e = L_xy - in1.sig(:);  L_e = L_e(codes.code_1.P);  L_a = L_e(codes.IL);         % Interleaven der extrinsischen Informationend    % for it = 1:num_it% ### EOF ######################################################################

⌨️ 快捷键说明

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