📄 decode.c
字号:
}
branch0=temp_c1*temp_c2;
}
if(cnt_s==(int)(*(nxt_s_p+no_of_states+j2))) /* input 1 */
{
/* output c1 */
if(*(nxt_o_p+2*no_of_states+j2)==0)
{
temp_c1=1/(1+exp((*(Data_p+2*i1))));
}
else
{
temp_c1=exp((*(Data_p+2*i1)))/(1+exp((*(Data_p+2*i1))));
}
/* output c2 */
if(*(nxt_o_p+3*no_of_states+j2)==0)
{
temp_c2=1/(1+exp((*(Data_p+2*i1+1))));
}
else
{
temp_c2=exp((*(Data_p+2*i1+1)))/(1+exp((*(Data_p+2*i1+1))));
}
branch1=temp_c1*temp_c2;
}
den[cnt_s]=den[cnt_s]+alpha[i1][j2]*branch0*belta[i1][cnt_s];
num[cnt_s]=num[cnt_s]+alpha[i1][j2]*branch1*belta[i1][cnt_s];
}
/* output bit 1 */
for(j2=0;j2<no_of_states;j2++)
{
branch0_c1=0;
branch1_c1=0;
if(cnt_s==(int)(*(nxt_s_p+j2))) /* input 0 */
{
/* output c1 */
if(*(nxt_o_p+j2)==0)
{
temp0_c1=1/(1+exp((*(Data_p+2*i1))));
}
else
{
temp1_c1=exp((*(Data_p+2*i1)))/(1+exp((*(Data_p+2*i1))));
}
/* output c2 */
if(*(nxt_o_p+no_of_states+j2)==0)
{
temp_c2=1/(1+exp((*(Data_p+2*i1+1))));
}
else
{
temp_c2=exp((*(Data_p+2*i1+1)))/(1+exp((*(Data_p+2*i1+1))));
}
if(*(nxt_o_p+j2)==0)
{
branch0_c1=branch0_c1+temp0_c1*temp_c2;
}
else
{
branch1_c1=branch1_c1+temp1_c1*temp_c2;
}
}
if(cnt_s==(int)(*(nxt_s_p+no_of_states+j2))) /* input 1 */
{
/* output c1 */
if(*(nxt_o_p+2*no_of_states+j2)==0)
{
temp0_c1=1/(1+exp((*(Data_p+2*i1))));
}
else
{
temp1_c1=exp((*(Data_p+2*i1)))/(1+exp((*(Data_p+2*i1))));
}
/* output c2 */
if(*(nxt_o_p+3*no_of_states+j2)==0)
{
temp_c2=1/(1+exp((*(Data_p+2*i1+1))));
}
else
{
temp_c2=exp((*(Data_p+2*i1+1)))/(1+exp((*(Data_p+2*i1+1))));
}
if(*(nxt_o_p+2*no_of_states+j2)==0)
{
branch0_c1=branch0_c1+temp0_c1*temp_c2;
}
else
{
branch1_c1=branch1_c1+temp1_c1*temp_c2;
}
}
den_c1[cnt_s]=den_c1[cnt_s]+alpha[i1][j2]*branch0_c1*belta[i1][cnt_s];
num_c1[cnt_s]=num_c1[cnt_s]+alpha[i1][j2]*branch1_c1*belta[i1][cnt_s];
}
/* output bit 2 */
for(j2=0;j2<no_of_states;j2++)
{
branch0_c2=0;
branch1_c2=0;
if(cnt_s==(int)(*(nxt_s_p+j2))) /* input 0 */
{
/* output c1 */
if(*(nxt_o_p+j2)==0)
{
temp_c1=1/(1+exp((*(Data_p+2*i1))));
}
else
{
temp_c1=exp((*(Data_p+2*i1)))/(1+exp((*(Data_p+2*i1))));
}
/* output c2 */
if(*(nxt_o_p+no_of_states+j2)==0)
{
temp0_c2=1/(1+exp((*(Data_p+2*i1+1))));
}
else
{
temp1_c2=exp((*(Data_p+2*i1+1)))/(1+exp((*(Data_p+2*i1+1))));
}
if(*(nxt_o_p+no_of_states+j2)==0)
{
branch0_c2=branch0_c2+temp_c1*temp0_c2;
}
else
{
branch1_c2=branch1_c2+temp_c1*temp1_c2;
}
}
if(cnt_s==(int)(*(nxt_s_p+no_of_states+j2))) /* input 1 */
{
/* output c1 */
if(*(nxt_o_p+2*no_of_states+j2)==0)
{
temp_c1=1/(1+exp((*(Data_p+2*i1))));
}
else
{
temp_c1=exp((*(Data_p+2*i1)))/(1+exp((*(Data_p+2*i1))));
}
/* output c2 */
if(*(nxt_o_p+3*no_of_states+j2)==0)
{
temp0_c2=1/(1+exp((*(Data_p+2*i1+1))));
}
else
{
temp1_c2=exp((*(Data_p+2*i1+1)))/(1+exp((*(Data_p+2*i1+1))));
}
if(*(nxt_o_p+3*no_of_states+j2)==0)
{
branch0_c2=branch0_c2+temp_c1*temp0_c2;
}
else
{
branch1_c2=branch1_c2+temp_c1*temp1_c2;
}
}
den_c2[cnt_s]=den_c2[cnt_s]+alpha[i1][j2]*branch0_c2*belta[i1][cnt_s];
num_c2[cnt_s]=num_c2[cnt_s]+alpha[i1][j2]*branch1_c2*belta[i1][cnt_s];
}
}
num_sum=0;
num_sum_c1=0;
num_sum_c2=0;
for(j1=0;j1<no_of_states;j1++)
{
num_sum=num_sum+num[j1];
num_sum_c1=num_sum_c1+num_c1[j1];
num_sum_c2=num_sum_c2+num_c2[j1];
}
den_sum=0;
den_sum_c1=0;
den_sum_c2=0;
for(j1=0;j1<no_of_states;j1++)
{
den_sum=den_sum+den[j1];
den_sum_c1=den_sum_c1+den_c1[j1];
den_sum_c2=den_sum_c2+den_c2[j1];
}
llr[i1] = log(num_sum/den_sum);
llr_c1[i1] = log(num_sum_c1/den_sum_c1);
llr_c2[i1] = log(num_sum_c2/den_sum_c2);
if(llr[i1]>10)
{
llr[i1]=10;
}
if(llr[i1]<-10)
{
llr[i1]=-10;
}
if(llr_c1[i1]>10)
{
llr_c1[i1]=10;
}
if(llr_c1[i1]<-10)
{
llr_c1[i1]=-10;
}
if(llr_c2[i1]>10)
{
llr_c2[i1]=10;
}
if(llr_c2[i1]<-10)
{
llr_c2[i1]=-10;
}
}
mlfAssign(LLR_I,mxCreateDoubleMatrix(1,block_size,mxREAL));
memcpy(mxGetPr(*LLR_I),llr,block_size*sizeof(double));
mlfAssign(&LLR1_C1,mxCreateDoubleMatrix(1,block_size,mxREAL));
memcpy(mxGetPr(LLR1_C1),llr_c1,block_size*sizeof(double));
mlfAssign(&LLR1_C2,mxCreateDoubleMatrix(1,block_size,mxREAL));
memcpy(mxGetPr(LLR1_C2),llr_c2,block_size*sizeof(double));
mlfAssign(&LLR_C,mxCreateDoubleMatrix(2,block_size,mxREAL));
mlfIndexAssign(&LLR_C,"(?,?)",mlfScalar(1),mlfCreateColonIndex(),LLR1_C1,NULL);
mlfIndexAssign(&LLR_C,"(?,?)",mlfScalar(2),mlfCreateColonIndex(),LLR1_C2,NULL);
mlfAssign(&LLR_C,mlfReshape(LLR_C,mlfScalar(1),mlfScalar(2*block_size),NULL));
mlfRestorePreviousContext(1,2,LLR_I,In_LLR,code_g);
return mlfReturnValue(LLR_C);
}
void mexFunction(int nlhs,mxArray *plhs[],int nrhs, const mxArray *prhs[])
{
mlfAssign(&plhs[0],BCJR(&plhs[1],prhs[0],prhs[1]));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -