LDPC码的matlab编解码仿真程序

LDPC码的matlab编解码仿真程序,第1张

#include <iostream>

#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,就是个试探的过程。原则多种多样。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12203898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存