soft Viterbi provedbu

S

shameem

Guest
hi,
Može li netko molim vas uploadati neki dobar materijal o provedbi mekih Viterbi dekoder?
Trebam Internet vrlo velik dio_Olease pomoć.

hvala

 
Ove dvije funkcije su za pričanje.koder dekoder i meke Viterbi
%------------------------------------------------- --------------------------

Funkcija encoder_out cnv_encd = (G, k, encoder_in)
Cnv_encd% (G, k, encoder_in)
% Određuje izlazni slijed binarnih convolutional koder
% G je generator matrica convolutional koda
% S redaka i n0 l * k stupaca.Njegova redaka su G1, G2 ,..., gn.
% K je broj bitova ulaska enkoder na svakoj sat ciklusa.
% Encoder_in binarnih ulaza seq.

% Provjerite da li dodatnih popunjenja nulama je potrebno
ako REM (dužina (encoder_in), k)> 0
encoder_in = [encoder_in, nula (size (1: k-REM (dužina (encoder_in), k )))];
kraj
n = dužina (encoder_in) / k;
% Provjerite veličinu matrice G
ako REM (veličina (G, 2), k)> 0
error ('Greska, g nije od prave veličine.')
kraj
Odrediti% L i N0
Veličina L = (G, 2) / k;
n0 = size (G, 1);
% Dodavanje dodatnih nula
u = [zeros (size (1

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Tužan" border="0" />

L-1) * k)), encoder_in, nula (veličina (1

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Tužan" border="0" />

L-1) * k))];
% Roditi uu, matrice čiji su stupci se sadržaj
% Pričanje.koder na raznim sat ciklusa.
u1 = U (l * k: -1:1);
za i = 1: n l-2
U1 = [u1, u ((i l) * k: -1: i * k 1)];
kraj
uu preoblikovati = (u1, l * k, n L-1);
% Odrediti izlazni
encoder_out = preoblikovati (REM (G * uu, 2), 1, n0 * (l n-1));%------------------------------------------------- --------------------------------

funkciju [decoder_out, survivor_state, cumulated_metric] = viterbi_soft (G, k, decoder_in)
% Viterbi Viterbi dekoder za convolutional koda
% [Decoder_out, survivor_state, cumulated_metric] = Viterbi (G, k, decoder_in)
% G je anx Lk svaki redak matrice od kojih
% Određuje veze s taktom na
% N-ti izlaz kod, k / n je stopa kod.
% Survivor_state je matrica prikazuje optimalni put kroz
% Rešetkama.Podatak je u funkcije odvojene metričkih (x, y)
% I može biti određeno za smještaj tvrdih i mekih odluku.
Ovaj algoritam% smanjuje metričke nego maksimiziranje
% Vjerojatnosti.

n = veličina (G, 1);
Provjerite% veličine
ako REM (veličina (G, 2), k) ~ = 0
error ('Veličina k G i ne slažem ")
kraj
ako REM (veličina (decoder_in, 2), n) = 0 ~
error ('kanal izlaz ne prave veličine')
kraj
Veličina L = (G, 2) / k;
number_of_states = 2 ^ ((L-1) * k);
% Roditi stanja matrica prijelaza, izlaz matrica, matrice i unos
za j = 0: number_of_states-1
za l = 0:2 ^ k-1
[Next_state, memory_contents] = nxt_stat (j, l, L, k);
inputa (j 1, next_state 1) = l;
branch_output = REM (memory_contents * G ', 2);
nextstate (j 1, l 1) = next_state;
izlaz (j 1, l 1) = bin2deci (branch_output);
kraj
kraj
state_metric = zeros (number_of_states, 2);
depth_of_trellis = dužina (decoder_in) / n;
decoder_in_matrix = preoblikovati (decoder_in, n, depth_of_trellis);
survivor_state = zeros (number_of_states, depth_of_trellis 1);
% Početka dekodiranje bez repa kanala izlaza
za i = 1: depth_of_trellis-L 1
flag = nula (1, number_of_states);
Ako je i <= L
korak = 2 ^ ((Li) * k);
drugo
korak = 1;
kraj
za j = 0: korak: number_of_states-1
za l = 0:2 ^ k-1
branch_metric = 0;
% Binary_output = (one (1, n) -2 * deci2bin (izlaz (j 1, l 1), n));
binary_output = deci2bin (izlaz (j 1, l 1), n);
za ll = 1: n
branch_metric = branch_metric abs (decoder_in_matrix (ll, i)-binary_output (ll));
kraj
if ((state_metric (nextstate (j 1, l 1) 1,2)> state_metric (j 1,1) ...
Branch_metric) | zastava (nextstate (j 1, l 1) 1) == 0)
state_metric (nextstate (j 1, l 1) 1,2) = state_metric (j 1,1) branch_metric;
survivor_state (nextstate (j 1, l 1) 1, i 1) = j;
zastava (nextstate (j 1, l 1) 1) = 1;
kraj
kraj
kraj
state_metric state_metric = :), 2: -1:1);
kraj
% Početka dekodiranje rep kanala-izlaza
za i = depth_of_trellis-L 2: depth_of_trellis
flag = nula (1, number_of_states);
last_stop = number_of_states / (2 ^ ((i-depth_of_trellis L-2) * k));
za j = 0: last_stop-1
branch_metric = 0;
% Binary_output = (one (1, n) -2 * deci2bin (izlaz (j 1,1), n));
binary_output = deci2bin (izlaz (j 1,1), n);
za ll = 1: n
branch_metric = branch_metric abs (decoder_in_matrix (ll, i)-binary_output (ll));
kraj
if ((state_metric (nextstate (j 1,1) 1,2)> state_metric (j 1,1) ...
Branch_metric) | zastava (nextstate (j 1,1) 1) == 0)
state_metric (nextstate (j 1,1) 1,2) = state_metric (j 1,1) branch_metric;
survivor_state (nextstate (j 1,1) 1, i 1) = j;
zastava (nextstate (j 1,1) 1) = 1;
kraj
kraj
state_metric state_metric = :), 2: -1:1);
kraj
% Roditi dekoder izlaz iz optimalnog puta
state_sequence = zeros (1, depth_of_trellis 1);
state_sequence (1, depth_of_trellis) = survivor_state (1, depth_of_trellis 1);
za i = 1: depth_of_trellis
state_sequence (1, depth_of_trellis-i 1) = survivor_state ((state_sequence (1, depth_of_trellis 2- ja) ...
1), Depth_of_trellis-i 2);
kraj
decodeder_output_matrix = zeros (k, depth_of_trellis-L 1);
za i = 1: depth_of_trellis-L 1
dec_output_deci = input (state_sequence (1, i) 1, state_sequence (1, i 1) 1);
dec_output_bin = deci2bin (dec_output_deci, k);
decoder_out_matrix :), i) = dec_output_bin (k: -1:1) ';
kraj
decoder_out = preoblikovati (decoder_out_matrix, 1, k * (depth_of_trellis-L 1));
cumulated_metric state_metric = (1,1);

 
hi ahmedseu,
hvala u vrlo velik dio za davanje mene kod mekih Viterbi dekoder.

Može u molimo vas, dajte mi dokument, tako da ja mogu lako razumjeti.

hvala

 
Dragi svi,
mogla mi tko osigurati kod majstora dokumentaciju u provedbi th eviterbi dekoder u VHDL, ili luk

 
Poštovani,
moguće je ako mi može kontaktirati putem e-pošte ako want.I u imati pismeni kod za 4state K = 2 s rate1 / 2 teška odluka Viterbi dekoder za primjer spominje prvi rad u Viterbi.
Sada ću početi probati drugi jedan, ali umjesto mekog odlučivanja, tako da možemo izmjenjivati svoja znanja u ovom području.
Srdačan pozdrav

 
plz ja potreba dekoder Viterbi implementacije u C jeziku plz ako postoje Boby može pružiti bilo kakvu pomoć da ga implementirati na DSP procesoru

 

Welcome to EDABoard.com

Sponsor

Back
Top