⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decoder.c

📁 与之前一个对应的代码
💻 C
字号:
#include<stdio.h>
#include"ctc.h"
void decoder(float code[],int niter,int L1,int decode[])
{
	int start_state1=0,start_state2=0;
	double L_a[L_total*2],L_e[L_total*2],L_all[L_total*2];
	int iter,i;
	float rec[2][L_total*3];
//	printf("%f %f",code[0],code[1]);
	for(i=0;i<L_total;i++){
		rec[0][3*i]=code[2*i];
		rec[1][3*i]=code[alpha[2*i]-1];
		rec[0][3*i+1]=code[2*i+1];
		rec[1][3*i+1]=code[alpha[2*i+1]-1];
	}
	for(i=0;i<L_total;i++){
		rec[0][3*i+2]=code[i+L_total*2];
		rec[1][3*i+2]=code[i+L_total*3];
	}
	for(i=0;i<2*L_total;i++){
		L_e[i]=0;
		L_all[i]=0;
	}
	for(iter=0;iter<niter;iter++){
		//decoder1
		for(i=0;i<2*L_total;i++){
			L_a[alpha[i]-1]=L_e[i];
		}
		logmap(rec[0],L_a,iter,0,L1,L_all,&start_state1);
		for(i=0;i<L_total;i++){
			L_e[2*i]=L_all[2*i]-2*rec[0][3*i]-L_a[2*i];
			L_e[2*i+1]=L_all[2*i+1]-2*rec[0][3*i+1]-L_a[2*i+1];
		}
		//decoder2
		for(i=0;i<2*L_total;i++){
			L_a[i]=L_e[alpha[i]-1];
		}
		logmap(rec[1],L_a,iter,0,L1,L_all,&start_state2);
		for(i=0;i<L_total;i++){
			L_e[2*i]=L_all[2*i]-2*rec[1][3*i]-L_a[2*i];
			L_e[2*i+1]=L_all[2*i+1]-2*rec[1][3*i+1]-L_a[2*i+1];
		}
	}
	for(i=0;i<2*L_total;i++){
		if(L_all[i]>0){
			decode[alpha[i]-1]=1;
		}
		else{
			decode[alpha[i]-1]=0;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -