# Polar
**Repository Path**: eric_hsia/Polar
## Basic Information
- **Project Name**: Polar
- **Description**: C and MATLAB implementation for Polar encoding and decoding
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2019-12-04
- **Last Updated**: 2026-08-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Polar codes
===================
This repository provides C and MATLAB implementations for polar codes.
> For the seminal work on polar codes, please refer to: **Erdal Arikan**, "Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels", http://arxiv.org/abs/0807.3917
Overview of what is provided
----------
- Encoding for polar codes
- Decoding for polar codes including
- Successive cancellation (SC) decoding (See [Arikan](http://arxiv.org/abs/0807.3917))
- Successive cancellation list (SCL) decoding (See [Tal](https://arxiv.org/abs/1206.0050))
- LLR based SCL decoding (See [Stimming](https://arxiv.org/abs/1401.3753))
- Code construction:
- Bhattacharya parameter based construction
- Monte Carlo code construction (BPSK, 4-ASK, 8-ASK, 16-ASK)
- PolarM only (Update Nov, 2016)
- Gaussian Approximation code construction (BPSK, 4-ASK, 8-ASK, 16-ASK)
- PolarM only (Update Nov, 2016)
- AWGN simulations
- Support for BPSK
- Support for 4-ASK, 8-ASK, 16-ASK
- Both Bit interleaved coded modulation (BICM) and multi-level coding (MLC) approaches are supported
- See [Mathis](https://opus4.kobv.de/opus4-fau/files/6201/MathisSeidlDissertation.pdf) for a summary of these approaches.
- PolarM only (Update Nov, 2016)
- Note the List decoder is not supported for MLC approaches in the current version
Decoding performance
------

The figure above shows the performance comparison between PolarC and [Tal](https://arxiv.org/abs/1206.0050) Fig. 1. A close comparison reveals that the performance for CRC aided polar code is about 0.1 dB worse. Note that the two key differences are (i) code construction method (ii) LLR based decoder with hardware-friendly (see [Stimming](https://arxiv.org/abs/1401.3753)) LLR updates for large values of LLRs.
** Update Nov, 2016 **
The figure above shows the results for modulation specific polar codes using the Gaussian approximation code construction for block length 1024 across a variety of rates and constellations. The results are close to the results given in [Mathis](https://opus4.kobv.de/opus4-fau/files/6201/MathisSeidlDissertation.pdf).
The figure above shows the results for for modulation specific polar codes using the Monte Carlo code construction for block length 1024 and info length 512 codes. The results use link level simulations for AWGN channel using the SCD algorithm. The results for 4-ASK + PBP (Gray Labeling) are close to the results in [Mahdavifar](https://arxiv.org/pdf/1302.0265v1.pdf) though there are some differences in the approach itself.
Runtime performance C and MATLAB
-----
Runtime is mainly dominated by the decoder. The run time comparison for rate 1/2 code is as follows (run on a single macbook pro 2015):
| Parameters | PolarC | PolarM | Speedup C/M |
|---|---|---|---|
| N = 2048, L = 1 | 250 | 51 | 5x |
| N = 2048, L = 4 | 67 | 3.2 | 20x |
| N = 2048, L = 32 | 10.1 | 0.65 | 15x |
| N = 512, L = 1 | 890 | 204 | 4.5x |
| N = 512, L = 4 | 287 | 14 | 20x |
| N = 512, L = 32 | 44 | 2.8 | 16x |