<< Chapter < Page Chapter >> Page >

Using the routine writetext.m (this file, which can be found on the website, uses the M atlab command fwrite ), write the Wizard of Oz text to a file OZ.doc . Use a compression routine ( uuencode on a Unix or Linux machine, zip on a Windows machine, or stuffit on a Mac) to compress OZ.doc . Note the file size when the file is in its compressed form,and the file size after decompressing. How does this compare with the compression ratio achieved in [link] ?

Channel coding

some redundancy to a signal before it is transmitted so that it becomes possible to detect when errors have occurredand to correct them, when possible.

Perhaps the simplest technique is to send each bit three times. Thus, in order to transmit a 0, the sequence 000is sent. In order to transmit 1, 111 is sent.This is the encoder . At the receiver, there must be a decoder . There are eight possible sequences that can be received,and a “majority rules” decoder assigns

000 0 001 0 010 0 100 0 101 1 110 1 011 1 111 1 .

This encoder/decoder can identify and correct any isolated single error and so the transmissionhas smaller probability of error. For instance, assuming no more than one error per block, if101 was received, then the error must have occurred in the middle bit, while if 110 was received,then the error must have been in the third bit. But the majority rules coding scheme is costly:three times the number of symbols must be transmitted, which reduces the bit rate by a factor of three.Over the years, many alternative schemes have been designed to reduce the probability of error in thetransmission, without incurring such a heavy penalty.

Linear block codes are popular because they are easy to design, easy to implement, and because they havea number of useful properties. With n > k , an ( n , k ) linear code operates on sets of k symbols, and transmits a length n code word for each set. Each code is defined by two matrices:the k by n generator matrix G , and the n - k by n parity check matrix H . In outline, the operation of the code is as follows:

  1. Collect k symbols into a vector x = { x 1 , x 2 , ... , x k } .
  2. Transmit the length n code word c = x G .
  3. At the receiver, the vector y is received. Calculate y H T .
  4. If y H T = 0 , then no errors have occurred.
  5. When y H T 0 , errors have occurred. Look up y H T in a table of “syndromes,” which contains a list of all possible received valuesand the most likely code word to have been transmitted, given the error that occurred.
  6. Translate the corrected code word back in to the vector x .

The simplest way to understand this is to work through an example in detail.

A ( 5 , 2 ) Binary linear block code

To be explicit, consider the case of a ( 5 , 2 ) binary code with generator matrix

G = 1 0 1 0 1 0 1 0 1 1

and parity check matrix

H T = 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 .

This code bundles the bits into pairs, and the four corresponding code words are

x 1 = 00 c 1 = x 1 G = 00000 , x 2 = 01 c 2 = x 2 G = 01011 , x 3 = 10 c 3 = x 3 G = 10101 , a n d x 4 = 11 c 4 = x 4 G = 11110 .

There is one subtlety. The arithmetic used in the calculation of the code words (and indeed throughout the linear block codemethod) is not standard. Because the input source is binary, the arithmetic is also binary.Binary addition and multiplication are shown in [link] . The operations of binary arithmetic may be more familiar as exclusive OR (binary addition), and logical AND (binary multiplication).

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Software receiver design. OpenStax CNX. Aug 13, 2013 Download for free at http://cnx.org/content/col11510/1.3
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software receiver design' conversation and receive update notifications?

Ask