Turbo码译码算法logmapo(rec_s,g,L_a,ind_dec)的c语言实现
时间: 2024-02-16 19:04:45 浏览: 162
以下是Turbo码译码算法logmapo(rec_s,g,L_a,ind_dec)的C语言实现:
```c
void logmapo(int rec_s, int g, int L_a[], int ind_dec[]) {
int j, k;
int n = rec_s / 2;
int L_p[n+1], L_c[n+1], L_s[n+1];
for (j = 0; j <= n; j++) {
L_p[j] = 0;
L_c[j] = L_a[j];
L_s[j] = 0;
}
for (j = 1; j <= n; j++) {
for (k = 0; k <= n-j; k++) {
int s = (g >> k) & 1;
int t = s ^ L_p[k+j-1];
int a = L_c[k+j];
if (t == 0) {
L_s[k+j-1] = a + L_p[k+j-1];
} else {
L_s[k+j-1] = a - L_p[k+j-1];
}
}
for (k = 0; k <= n-j; k++) {
L_p[k+j-1] = L_s[k+j-1];
}
}
for (j = 0; j < n; j++) {
if (L_p[j] < 0) {
ind_dec[j] = 1;
} else {
ind_dec[j] = 0;
}
}
}
```
其中,rec_s表示接收的信号长度,g表示生成多项式,L_a表示先验LLR,ind_dec表示硬判决输出。该函数利用对数域中的加法和减法实现Turbo码的译码过程。具体实现过程可以参考相关的Turbo码译码算法文献。
阅读全文