mirror of
https://github.com/aicodix/modem.git
synced 2026-04-27 22:35:41 +00:00
added more codes with hand-picked erasure probabilities
This commit is contained in:
parent
4cb15194aa
commit
8cb6f44085
2 changed files with 14 additions and 14 deletions
19
freezer.cc
19
freezer.cc
|
|
@ -12,17 +12,11 @@ Copyright 2021 Ahmet Inan <inan@aicodix.de>
|
|||
#include "polar_freezer.hh"
|
||||
|
||||
template <int M>
|
||||
void code(int N, int K)
|
||||
void code(int N, int K, double P)
|
||||
{
|
||||
long double erasure_probability = (long double)(N - K) / N;
|
||||
double design_SNR = 10 * std::log10(-std::log(erasure_probability));
|
||||
std::cerr << "design SNR: " << design_SNR << std::endl;
|
||||
auto freeze = new CODE::PolarCodeConst0<M>;
|
||||
double better_SNR = design_SNR + 1.59175;
|
||||
std::cerr << "better SNR: " << better_SNR << std::endl;
|
||||
long double better_probability = std::exp(-pow(10.0, better_SNR / 10));
|
||||
auto frozen = new uint32_t[1<<(M-5)];
|
||||
(*freeze)(frozen, M, K+(1<<M)-N, better_probability);
|
||||
(*freeze)(frozen, M, K+(1<<M)-N, P);
|
||||
delete freeze;
|
||||
|
||||
std::cout << "static const uint32_t frozen_" << std::dec << N << "_" << K << "[" << (1<<(M-5)) << "] = { " << std::hex;
|
||||
|
|
@ -33,8 +27,11 @@ void code(int N, int K)
|
|||
|
||||
int main()
|
||||
{
|
||||
code<14>(16384, 8192+32);
|
||||
code<13>(8192, 4096+32);
|
||||
code<12>(4096, 2048+32);
|
||||
code<16>(65536, 32768+32, 0.42);
|
||||
code<15>(32768, 16384+32, 0.40);
|
||||
code<14>(16384, 8192+32, 0.39);
|
||||
code<13>(8192, 4096+32, 0.38);
|
||||
code<12>(4096, 2048+32, 0.37);
|
||||
code<11>(2048, 1024+32, 0.34);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue