#include <limits>
#define LNODE 20
using namespace std
#include <malloc.h>
#include <conio.h>
typedef char **HuffmanCode
HuffmanCode HuffmanCoding(int n)
{
int i , f , start , j , count = 1
char *cd
HuffmanCode HC
HC = (HuffmanCode)malloc((n+1)*sizeof(char *))
cd = (char *)malloc(n*sizeof(char))
cd[n-1] = '\0'
for(i = 1 i <= n i++)
{
start = n - 1
for(j = 1 j <= count j++){
cd[--start] = '9'
}
HC[i] = (char *)malloc((n-start)*sizeof(char))
strcpy(HC[i],&cd[start])
count++
}
free(cd)
return(HC)
}//HuffmanCoding
int main()
{
int k
int A[LNODE]
HuffmanCode q
q = HuffmanCoding(LNODE)
for(k = 1 k <= LNODE k++)
cout <<*q[k] <<" "
cout <<"OK"
getch()
return 0
}
QC LDPC码,可以用代数法和随机方法构造。如果是代数方法,这里很难说清楚,需要找Linshu老师那边的文章看看,方法一般都还算简单,但是需要有限域的知识。随机构造的话,以802.16e为代表的QC LDPC码,大致过程如下
1:先确定基矩阵的大小,基矩阵大的话,存储需要的空间也会大,但是性能会好些。
2:确定度分布,这个和应用场合有关,一般而言,最大变量度分布大的话,瀑布区性能会好些,但是也还是对存储要求更高。而且如果基矩阵不够大的话,度分布大的话,密度会高,这样会使得环分布优化困难 。
3:确定好基矩阵后,就是利用circulant去替换每个“1”元素了,至于如何选择circulant,就是个试探的过程。原则多种多样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)