ME502 Digital Communications

ME502 Digital Communications

ME502 Digital Communications


1) Research about polar codes, including their inventors, their history, strengths,  weaknesses and future. Provide good references about the subject matter using in the  correct manner the IEEE referencing style. Give appropriate credit to work cited.

ME502 Digital Communications

2) Present the mathematical theory behind polar codes in the most and precise correct  manner. Give appropriate credit to work cited.
3) Present the mathematical theory behind the SCD algorithm in the most and precise  correct manner. Give appropriate credit to work cited.
4) Write a MATLAB/SIMULINK code that can be used to encode data using polar codes. Use an example to test the correctness of your design. Copy your MATLAB script  and/or Simulink block diagram and paste in the appendix of your report.
5) Write a MATLAB/SIMULINK code to implement the SCD algorithm that is used to decode or retrieve the original data from polar coded words. Use an example to test the correctness of your design. Copy your MATLAB script and/or Simulink block diagram and paste in the appendix of your report.



Polar codes are channels for transmitting binary information through noisy channels. The noisy channels are characterized by statistical models like the Discrete Memoryless Systems (DMS) and Additive White Gaussian Noise Channel (AWGN). The models represent the distributions of noise that can exist in real time [1].

ME502 Digital Communications

The major focus of polar codes is to provide a platform for the binary inputs of the transmission channels. That involves the transmission of bits of the transmission channels and receiving the noise version of the bits in the receiving end [1]. Therefore, the process of polar coding involves recording the original version of the transmitted bits from the noisy versions of the transmitted information bits [1].

Mathematically, polar coding is applied to improve the efficiency of transmission or the transmission rate of the bits. Similarly, the coding will also improve the quality of the channel as well as post-processing the information that is being transmitted over the channel [1].

The pre-processing of polar codes involves improving the efficiency of the inputs by adding redundancy. Improving efficiency of the inputs involves taking the k- bits, converting them into N- bits and transmitting those N- bits through the channel and getting them in the original form of k- bits [1].

The whole process described in the preceding paragraph involves receiving the noisy versions of N- bits and making an estimation to convert them back to the original K- bits [1]. That simply means that the process is about encoding and decoding. The process of decoding and encoding could also be described as the process of taking the bits, transmitting them through a channel and estimating their original format [1].

ME502 Digital Communications

Therefore, the polar coding blocks are the encoding blocks, the transmission blocks, and the decoding blocks. The blocks can be described theoretically as follows;

Let binary input discrete memoryless channel (BI- DMS) be a channel with a capacity C, with a value between 0 and 1. When the code word is Tx in N channel- uses, then the polarization converts;

  1. C fraction  of the N bits channels as noiseless, i.e. the capacity is equal to 1 or
  2. (1- C) Remaining extremely noisy channels i. e capacity is equal to zero (0)

The assumption in the above model is that N approaches infinity. Polarizing the channel in the two extremes involves making the inputs to be extremely noisy or completely noiseless [1]. Therefore, the overall strategy in polar coding is to get the capacity that will use only the good channels (completely noiseless channels) for transmitting the information bits while the remaining channels (extremely noisy channels) are frozen or simply not left unused [1].

Unique features of polar codes are that they are not- versatile, they can change significantly with different choices of designs and as well as the fact that they as they have more accurate construction algorithms [1].

The history of polar coding is well articulated in the publication by Erdal [1] in the year 2015. Erdal records that the idea of polar coding was initially started as a way of providing a boost to the cutoff rate of sequential decoding. The boosting was required along the original lines of Massey and Pinsker [1]. The main idea, in this case, is to take a matrix channel that can be built artificially or can be given. The matrix is then split into some sub channels that are correlated [1].

The original design of polar coding was meant to be a low- complexity recursive channel that could combine and split any operation of this type [1]. The original one was to be used as the inner code in a concatenated scheme that has an outer convolutional coding and sequential decoding [1]. However, the inner code of the polar code became so efficient that there was no need for the outer code to achieve the original objective of boosting the rate of cutoff capacity of the channel [1].

The Strengths Of Polar Codes

The following are some of the powerful strengths of polar codes [1]:

  • Simple encoding and decoding algorithms: Codes does not display randomness in the decoding and encoding blocks
  • Explicit construction: low complexity of the encoding blocks, decoding blocks.
  • Low complexity of the codes, fixed complexity of the codes and deterministic code operations
  • The implementation of polar codes is relatively easy
  • The polar codes are highly efficient
  • The polar codes have the best available performance under advanced performance and advanced decoders
  • The polar codes does not have error floors in the BSC/BEC
  • The new variables of encoding and decoding are introduced into the system making it perform better than the earlier versions
  • The Channon capacity. The ultimate limit of the improvement where you improve the transmission of the channel. The fundamental limit of a green statistically defined channel where you can transmit utmost the highest rate of bits.

    ME502 Digital Communications

The Weaknesses Of Polar Codes

The weaknesses of polar codes are outlined below [1]:

  • High latency associated with it hence making it slow.
  • Polar codes have relatively poorer performance under SCD compared to LDPC codes, at finite N. The only solution is using advanced decoders
  • The solutions are costlier for improving performance of polar codes, comparable to LDPC, at finite N

The Future Of Polar Codes

Polar coding is just one of the numerous contenders of service classes that are providing a serious challenge to channel coding in future wireless networks [2]. The reason why polar coding looks promising in the is that it provides many features than the other competitors [2]. For example, the rate adaptation is naturally provided, and the length adaptation can be achieved by puncturing and shortening [2]. Moreover, polar coding provides a fast successive cancellation decoding that is essential for future wireless technology. Polar coding has been adopted for developing 5 G networks that are set to be launched in the year 2020 [2].

Polar codes are anticipated to be used in the 5G networks and beyond. The comprehensive polar coding solutions suggested in the publication [2] outlines a number of possible uses of polar codes. Polar codes is anticipated to be used in calculation of the reliability, calculation of matching and checking for parity. Polar coding is also anticipated to be used in judging the transmission channel design from the view point of the industry [2].

Polar codes also have a future in the maritime industry. The maritime industry anticipate using polar codes to anticipate the potential risks in the industry in a more modest manner so that they can be mitigated to reduce the risks associated with such risks. The specific areas of possible application off the polar codes include designing the ship structure and the ship signal system [2].

The Mathematical Theory Behind Polar Codes

The mathematical theory of polar codes can be explained under the three blocks of code construction, encoding and decoding [1]. Code construction involves selecting k out of N indices in the range {0, 1,…, N-1). The value of N must be a power of 2, i.e., N = 2^n.  There are many algorithms that exist [1]. The simplest algorithm, however, is to use recursion in the form Z → {z^2, z^2}. In the case, the channel is an additive white Gaussian channel (AWGN) [1].

The idea is that, given a single value, we are going to generate two values using two different functions [1].  Consequently, we can recursively the same function and use the two values to generate four vales [1]. Again, using the same function, the four values will generate eight values and so on until the number of values equal to N [1].

After the N values have been generated, the recursion stops and k least values are picked from the N values. Now, let the indices of the leas values be in the set J [1].

The Mathematical Theory Behind Successive Cancellation Decoding (SCD) Algorithms

A successive Cancellation Decoding (SCD) is a very fundamental and simple decoder that is proposed as a recursive algorithm [3]. Even though SCD may seem to be similar to a plain vanilla decoder, it is relatively inferior to other decoders [3]. It is a greedy algorithm that will get you all that you ever needed regarding decoding the inputs to get a meaningful output out of it [3]. The SCD decoding can be represented in many ways such as the two-way decoding. The two-way decoding algorithm involves N likelihood of selecting the element X. The N likelihoods of the bits are sequentially transformed into message bits d [3]. The message bits have both the noisy and non-noisy channels embedded in it. The mathematical theory behind SCD decoding can be summarized as follows [3].

  1. The elements of the decoding algorithm

For a better experience of decoding, the numerical underflows are natural logs using likelihood ratios [3].

Now, assuming we have two likelihoods (i. e N= 2), the following transformation will occur in the matrix of the two likelihood [3].

Let the two likelihoods be f (L1, L2) and g (L1, L2). Now, the transformation that will occur in g (L1, L2) is determined by g (L1, L2). Similarly, f (l1, L2) will define the function that will be used on g (L1, L2). The process is called broadcasting of bits from a branch [3].

  1. The numerical issue

The suggested method is to use log likelihood instead of standard numbers. The likelihoods are used because they give a more efficient solution [3].

  1. The computational tree

The computation tree consists of N input likelihoods. The N iterations and the N computational trees form an overall tree that will produce the final values [3]. This implies that there are N output likelihoods. For each combination of trees, there will be a unique tree branch [3]. The N trees are naturally embedded in an N by (n-1) matrix [3]. The function g (L1, L2) is only used in the last section of the recursion, or sometimes it is never used at all. In the whole process, the maximum number of active level is three [3]. Therefore, if he number of active levels exceed this number, then it has to be truncated to three [3].

Encoding Data Using Polar Codes In MATLAB

The following code provides the MATLAB encoding of polar codes. The output of the codes is provided in the appendix section. The codes have been developed based on the knowledge from a publication by Erdal [1].

N1=128; K1=64; Ec=1; N0=2; %Initializing of N1, K1
% Standard polar coding
u= (rand(K1,1)>0.5);% initializing the value of u
x= pencode(u); %polar encoding
y= (2*x-1)*sqrt(Ec) + sqrt(N0/2)*randn(N1,1); % defining AWGN


Codes For Implementing SCD Algorithms To Retrieve Original Data From Polar Codes

%the following MATLAB code can be used to decode a polar code using the Successive Cancellation Decoding. The codes have been developed based on the knowledge from the publication by [3]. The output of the codes is outlined in the appendix section.

U1 = (rand (k, 1)>0.5; % initializing the value of u

X1 = pencode(u); % Polar coding

Y1 = (2*x-1)*sqrt(Ec) + sqrt (N0/2)*randn(N11); %Defining the AWGN

a_decoded  = pdecode(y); % The successive cancellation Decoding

logical(sum(u==a_decoded) % the code for checking if the succeive decoding has been done properly end


A. Erdal, “Channel Polarization: A Method for ConstructingCapacity-Achieving Codes for Symmetric Binary- Input Memoryless Channels,” Journal of IEEE Transmission in Information Technology, 2009. as, “Polar coding for future Networks: Theory and Practice,” in IEEE Wireless Communications and Networking Conference, Barcelona, 2018.

Chen, Kai, Niu, Kai, Lin, and Jiaru, “Improved Successive Cancellation Decoding of Polar Codes,” Journal of IEEE Transactions on Communications, vol. 61, no. 8, 2013.

ME502 Digital Communications