TurboDecode: Decode a code which is encoded with the turbo-code.

Description Usage Arguments Value Author(s) Examples

Description

The code will be decoded with the turbo-code procedure. The given coder must be an systematic coder and should have at least 2 exits. To decide which exit is used, the user can decide this with the parameter index. The principle of turbo decoding is that the decoding is a iterative method, so code will be passed through the decoder multiple times. With the parameter iteration you can decide how often the decoders are passed through. After each iteration the result should be better and the result of the last iteration will be used in the next iteration as input values. The exact signal level of the input will be used as input in the first iteration. When punctuation was used during encoding it is important that the same punctuation is given in the decoding because all bits which are deleted can now be inserted again.

Usage

1
2
3
TurboDecode(code, permutation.vector = NULL, iterations = 1,
  coder.info = NULL, parity.index = coder.info$N,
  punctuation.matrix = NULL, visualize = FALSE)

Arguments

code

Code which will be decoded to the original message.

permutation.vector

Permutation vector which will be created with TurboGetPermutation.

iterations

Amount of decoding iterations.

coder.info

Coder which will be created with ConvGenerateEncoder or ConvGenerateRscEncoder.

parity.index

Index to decide which exit of the coder will be used for the encoding (>1). Default value is always the last exit of the coder.

punctuation.matrix

Punctuation matrix to puncture the output, will be created with TurboGetPunctuationMatrix.

visualize

Flag to decide whether to create a visualization pdf or not.

Value

Decoded message, will be a list (soft and hard values).

Author(s)

Witsch Daniel

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
input <- c(1,0,1,1,0)

#default coder and permutation vector
message.encoded <- TurboEncode(input)
result <- TurboDecode(message.encoded, iterations = 5)
print(result)

#custom coder and permutation vector
coder <- ConvGenerateRscEncoder(2, 2, c(5, 7))
perm <- TurboGetPermutation(length(input), coder, "RANDOM")
message.encoded <- TurboEncode(input, perm, coder)
result <- TurboDecode(message.encoded, perm, 5, coder)
print(result)

#decoding with punctuation matrix
punct <- TurboGetPunctuationMatrix(c(1,1,0,1,0,1))
message.encoded.punct <- TurboEncode(input, perm, coder, punctuation.matrix = punct)
result <- TurboDecode(message.encoded.punct$punctured, perm, 5, coder, punctuation.matrix = punct)
print(result)

DaniWi/Channelcoding documentation built on May 6, 2019, 1:23 p.m.