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

📄 decode.c

📁 这是一个vblast程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                       }
                     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 + -