亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dec.c

?? 這個是用VC編的關(guān)于LDPC碼方面的應(yīng)用程序,很全的,包括編碼譯碼等方面的仿真
?? C
字號:
/* DEC.C - Decoding procedures. *//* Copyright (c) 2000, 2001 by Radford M. Neal  * * Permission is granted for anyone to copy, use, or modify this program  * for purposes of research or education, provided this copyright notice  * is retained, and note is made of any changes that have been made.  * * This program is distributed without any warranty, express or implied. * As this program was written for research purposes only, it has not been * tested to the degree that would be advisable in any important application. * All use of this program is entirely at the user's own risk. *//* NOTE:  See decoding.html for general documentation on the decoding methods */#include <stdio.h>#include <stdlib.h>#include <math.h>#include "alloc.h"#include "mod2sparse.h"#include "mod2dense.h"#include "mod2convert.h"#include "rand.h"#include "rcode.h"#include "check.h"#include "dec.h"#include "enc.h"/* GLOBAL VARIABLES.  Declared in dec.h. */decoding_method dec_method;	/* Decoding method to use */int table;	/* Trace option, 2 for a table of decoding details */int block_no;	/* Number of current block, from zero */int max_iter;	/* Maximum number of iteratons of decoding to do */char *gen_file;	/* Generator file for Enum_block and Enum_bit *//* DECODE BY EXHAUSTIVE ENUMERATION.  Decodes by trying all possible source   messages (and hence all possible codewords, unless the parity check matrix   was redundant).  If the last argument is 1, it sets dblk to the most likely   entire block; if this argument is 0, each bit of dblk is set to the most   likely value for that bit.  The marginal probabilities of each bit being 1   are returned in bitpr.   The function value returned is the total number of codewords tried (which    will be the same for all blocks).  The return valued is "unsigned" because   it might conceivably be as big as 2^31.   The parity check matrix and other data are taken from the global variables   declared in rcode.h.   The number of message bits should not be greater than 31 for this procedure.   The setup procedure immediately below checks this, reads the generator file,   and outputs headers for the detailed trace file, if required. */void enum_decode_setup(void){  read_gen(gen_file,0,0);  if (N-M>31)  { fprintf(stderr,"Trying to decode messages with %d bits by exhaustive enumeration is absurd!\n",      N-M);    exit(1);    }  if (table==2)  { printf("  block   decoding  likelihood\n");  }}unsigned enum_decode( double *lratio,	/* Likelihood ratios for bits */  char *dblk, 		/* Place to stored decoded message */  double *bitpr,	/* Place to store marginal bit probabilities */  int max_block		/* Maximize probability of whole block being correct? */){  mod2dense *u, *v;  double lk, maxlk, tpr;  double *bpr, *lk0, *lk1;  char sblk[31];  char *cblk;  unsigned d;  int i, j;  if (N-M>31) abort();  /* Allocate needed space. */  bpr = bitpr;  if (bpr==0 && max_block==0)  { bpr = chk_alloc (N, sizeof *bpr);  }  cblk = chk_alloc (N, sizeof *cblk);  if (type=='d')  { u = mod2dense_allocate(N-M,1);    v = mod2dense_allocate(M,1);  }  if (type=='m')  { u = mod2dense_allocate(M,1);    v = mod2dense_allocate(M,1);  }  lk0 = chk_alloc (N, sizeof *lk0);  lk1 = chk_alloc (N, sizeof *lk1);  /* Pre-compute likelihoods for bits. */  for (j = 0; j<N; j++)  { 
	lk0[j] = 1/(1+lratio[j]);    lk1[j] = 1 - lk0[j];  }  /* Initialize marginal bit probabilities. */  if (bpr)  { for (j = 0; j<N; j++) bpr[j] = 0.0;  }  /* Exhaustively try all possible decoded messages. */  tpr = 0.0;  for (d = 0; d<=(1<<(N-M))-1; d++)  {    /* Unpack message into source block. */    for (i = N-M-1; i>=0; i--)    { sblk[i] = (d>>i)&1;    }    /* Find full codeword for this message. */    switch (type)    { case 's':      { sparse_encode (sblk, cblk);        break;      }      case 'd':      { dense_encode (sblk, cblk, u, v);        break;      }      case 'm':      { mixed_encode (sblk, cblk, u, v);        break;      }    }    /* Compute likelihood for this decoding. */    lk = 1;    for (j = 0; j<N; j++)    { lk *= cblk[j]==0 ? lk0[j] : lk1[j];    }    /* Update maximum likelihood decoding. */    if (max_block)    { if (d==0 || lk>maxlk)      { for (j = 0; j<N; j++)        { dblk[j] = cblk[j];        }        maxlk = lk;      }    }    /* Update bit probabilities. */     if (bpr)    { for (j = 0; j<N; j++)       { if (cblk[j]==1)         { bpr[j] += lk;        }      }      tpr += lk;    }    /* Output data to trace file. */    if (table==2)    { printf("%7d %10x  %10.4e\n",block_no,d,lk);    }  }  /* Normalize bit probabilities. */  if (bpr)  { for (j = 0; j<N; j++) bpr[j] /= tpr;  }  /* Decoding to maximize bit-by-bit success, if that's what's wanted.      In case of a tie, decode to a 1. */  if (!max_block)  { for (j = 0; j<N; j++)     { dblk[j] = bpr[j]>=0.5;    }  }  /* Free space. */  if (bpr!=0 && bpr!=bitpr) free(bpr);  free(cblk);  free(lk0);  free(lk1);  return 1<<(N-M);}/* DECODE USING PROBABILITY PROPAGATION.  Tries to find the most probable    values for the bits of the codeword, given a parity check matrix (H), and   likelihood ratios (lratio) for each bit.  If max_iter is positive, up to    that many iterations of probability propagation are done, stopping before    then if the tentative decoding is a valid codeword.  If max_iter is    negative, abs(max_iter) iterations are done, regardless of whether a    codeword was found earlier.   Returns the number of iterations done (as an "unsigned" for consistency   with enum_decode).  Regardless of whether or not a valid codeword was    reached, the bit vector from thresholding the bit-by-bit probabilities is    stored in dblk, and the resulting parity checks are stored in pchk (all    will be zero if the codeword is valid).  The final probabilities for each    bit being a 1 are stored in bprb.   The setup procedure immediately below outputs headers for the detailed trace   file, if required.*/void prprp_decode_setup (void){  if (table==2)  { printf(     "  block  iter  changed  perrs    loglik   Eperrs   Eloglik  entropy\n");  }}unsigned prprp_decode( mod2sparse *H,	/* Parity check matrix */  double *lratio,	/* Likelihood ratios for bits */  char *dblk,		/* Place to store decoding */  char *pchk,		/* Place to store parity checks */  double *bprb		/* Place to store bit probabilities */){   int N, n, c;  N = mod2sparse_cols(H);  /* Initialize probability and likelihood ratios, and find initial guess. */  initprp(H,lratio,dblk,bprb);  /* Do up to abs(max_iter) iterations of probability propagation, stopping     early if a codeword is found, unless max_iter is negative. */
  //如果加了負(fù)號,則必須達(dá)到次數(shù),沒有加的話是碼子就可以了!  for (n = 0; ; n++)  {     c = check(H,dblk,pchk);    if (table==2)    { printf("%7d %5d %8.1f %6d %+9.2f %8.1f %+9.2f  %7.1f\n", block_no, n, changed(lratio,dblk,N), c, loglikelihood(lratio,dblk,N),        expected_parity_errors(H,bprb), expected_loglikelihood(lratio,bprb,N), entropy(bprb,N));    }       if (n==max_iter || n==-max_iter || (max_iter>0 && c==0))    {
	  break;     }    iterprp(H,lratio,dblk,bprb);  }  return n;}/* INITIALIZE PROBABILITY PROPAGATION.  Stores initial ratios, probabilities,   and guess at decoding. */void initprp( mod2sparse *H,	/* Parity check matrix */  double *lratio,	/* Likelihood ratios for bits */  char *dblk,		/* Place to store decoding */  double *bprb		/* Place to store bit probabilities, 0 if not wanted */){   mod2entry *e;
  /*typedef struct mod2entry /* Structure representing a non-zero entry, or
			      //the header for a row or column               
 {
  int row, col;		  /* Row and column indexes of this entry, starting
                             //at 0, and with -1 for a row or column header  

  struct mod2entry *left, *right,  /* Pointers to entries adjacent in row  
                   *up, *down;     /*   and column, or to headers.  Free   
                                   /*   entries are linked by 'left'.

  double pr, lr;	  /* Probability and likelihood ratios - not used by the mod2sparse module itself             
} mod2entry;*/  int N;  int j;  N = mod2sparse_cols(H);  for (j = 0; j<N; j++)  { 
	for (e = mod2sparse_first_in_col(H,j); !mod2sparse_at_end(e);  e = mod2sparse_next_in_col(e))    { 
	  e->pr = lratio[j];      e->lr = 1;    }    if (bprb) bprb[j] = 1 - 1/(1+lratio[j]);//如何解讀該行語法??    dblk[j] = (lratio[j]>=1);  }}/* DO ONE ITERATION OF PROBABILITY PROPAGATION. *///一次概率傳播過程。void iterprp( mod2sparse *H,	/* Parity check matrix */  double *lratio,	/* Likelihood ratios for bits */  char *dblk,		/* Place to store decoding */  double *bprb		/* Place to store bit probabilities, 0 if not wanted */){  double pr, dl, t;  mod2entry *e;  int N, M;  int i, j;  M = mod2sparse_rows(H);  N = mod2sparse_cols(H);  /* Recompute likelihood ratios. */  for (i = 0; i<M; i++)  { 
	dl = 1;    for (e = mod2sparse_first_in_row(H,i); !mod2sparse_at_end(e);  e = mod2sparse_next_in_row(e))    { 
	  e->lr = dl;      dl *= 2/(1+e->pr) - 1;    }    dl = 1;    for (e = mod2sparse_last_in_row(H,i); !mod2sparse_at_end(e); e = mod2sparse_prev_in_row(e))    { 
	  t = e->lr * dl;      e->lr = (1-t)/(1+t);      dl *= 2/(1+e->pr) - 1;    }  }  /* Recompute probability ratios.  Also find the next guess based on the     individually most likely values. */  for (j = 0; j<N; j++)  { 
	pr = lratio[j];    for (e = mod2sparse_first_in_col(H,j); !mod2sparse_at_end(e);e = mod2sparse_next_in_col(e))    { 
	  e->pr = pr;      pr *= e->lr;    }    /*
	if (isnan(pr))    { 
		pr = 1;    }
    */    if (bprb) bprb[j] = 1 - 1/(1+pr);    dblk[j] = pr>=1;    pr = 1;    for (e = mod2sparse_last_in_col(H,j); !mod2sparse_at_end(e); e = mod2sparse_prev_in_col(e))    { 
	  e->pr *= pr;      /* 
	  if (isnan(e->pr))       { 
		  e->pr = 1;      }
	  */      pr *= e->lr;    }  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩综合aⅴ视频| 亚洲成a人v欧美综合天堂下载| 日韩一区二区三区四区| 欧美伦理影视网| 欧美日韩小视频| 欧美精品三级在线观看| 6080yy午夜一二三区久久| 欧美日韩国产美女| 欧美一区二区三区日韩视频| 日韩视频123| 日韩欧美国产综合一区| www久久精品| 国产精品午夜久久| 中文字幕色av一区二区三区| 亚洲图片激情小说| 亚洲精品成人天堂一二三| 亚洲福利一区二区| 奇米一区二区三区| 国产美女一区二区三区| www.日韩av| 欧美天堂亚洲电影院在线播放| 69堂国产成人免费视频| 久久久精品一品道一区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲精品中文字幕在线观看| 亚洲国产成人av好男人在线观看| 午夜国产精品一区| 久久99国产乱子伦精品免费| 国产成人午夜片在线观看高清观看| 处破女av一区二区| 日本韩国欧美一区二区三区| 欧美一级在线视频| 久久美女艺术照精彩视频福利播放| 亚洲欧洲日本在线| 肉丝袜脚交视频一区二区| 国模套图日韩精品一区二区 | 欧美性极品少妇| 欧美一区二区三区视频在线| 久久欧美一区二区| 一个色在线综合| 蜜臀91精品一区二区三区| 国产91综合网| 欧美日韩亚洲综合一区| 久久综合网色—综合色88| 国产精品麻豆一区二区| 五月天亚洲精品| 国产高清一区日本| 欧美日韩免费观看一区三区| 久久久国际精品| 亚洲自拍偷拍图区| 国产美女精品一区二区三区| 欧美系列日韩一区| 久久久久久综合| 亚洲成人av免费| 成人动漫中文字幕| 欧美一区二区美女| 国产精品久久久久久久久免费桃花 | 久久婷婷成人综合色| 亚洲免费视频中文字幕| 国产在线播放一区二区三区| 在线播放日韩导航| 欧美国产乱子伦| 欧美96一区二区免费视频| av一本久道久久综合久久鬼色| 日韩午夜小视频| 一区二区在线免费观看| 国产乱码精品一区二区三| 欧美日韩国产高清一区二区三区| 国产精品麻豆欧美日韩ww| 日韩av在线免费观看不卡| 色老头久久综合| 国产精品福利在线播放| 韩国一区二区视频| 欧美日韩高清影院| 一区在线中文字幕| 国产99精品视频| 国产午夜精品一区二区三区视频 | 亚洲午夜激情网页| 成人一道本在线| www亚洲一区| 日韩电影免费一区| 欧美日韩小视频| 一区二区三区免费网站| 国产成人在线视频网站| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲猫色日本管| 国产成人一级电影| 久久综合狠狠综合| 麻豆精品在线视频| 91精品国产一区二区人妖| 亚洲国产精品麻豆| 在线精品视频小说1| 亚洲美女屁股眼交3| 一本到不卡精品视频在线观看| 自拍偷在线精品自拍偷无码专区| 国产精品一线二线三线精华| 精品久久久久久无| 毛片av中文字幕一区二区| 欧美一级视频精品观看| 午夜精品视频一区| 欧美精品成人一区二区三区四区| 亚洲成av人片一区二区三区| 色婷婷久久久久swag精品| 亚洲色图欧洲色图婷婷| 91小视频在线免费看| 亚洲人成人一区二区在线观看| aaa欧美大片| 亚洲男人都懂的| 欧美主播一区二区三区美女| 亚洲一级不卡视频| 欧美精品在欧美一区二区少妇| 亚洲国产视频网站| 91精品国产丝袜白色高跟鞋| 麻豆精品久久精品色综合| 久久色在线视频| 国产99久久久精品| 综合久久国产九一剧情麻豆| 在线观看日韩一区| 亚洲v精品v日韩v欧美v专区| 91精品国产综合久久久久久久久久 | 亚洲专区一二三| 欧美体内she精高潮| 青青草97国产精品免费观看| 26uuu国产一区二区三区| 国产jizzjizz一区二区| 亚洲天天做日日做天天谢日日欢| 欧美三级电影在线观看| 视频一区视频二区中文| 2024国产精品| 91色乱码一区二区三区| 午夜精品久久久久久久久久| 欧美r级在线观看| 岛国一区二区三区| 一区二区三区欧美| 日韩一区二区免费在线观看| 国内久久精品视频| 亚洲男人电影天堂| 日韩亚洲欧美一区| 成人性视频免费网站| 亚洲综合丁香婷婷六月香| 欧美一区二区三区精品| 风间由美中文字幕在线看视频国产欧美| 国产精品视频观看| 欧美美女一区二区在线观看| 韩国理伦片一区二区三区在线播放| 欧美国产日韩精品免费观看| 欧美色图在线观看| 国产麻豆视频一区| 一区二区三区四区中文字幕| 日韩欧美一区二区不卡| av午夜精品一区二区三区| 日韩专区欧美专区| 中文字幕日韩欧美一区二区三区| 欧美日韩1234| 不卡的av电影在线观看| 欧美嫩在线观看| 热久久一区二区| 亚洲人成精品久久久久| 日韩欧美成人激情| 91福利精品第一导航| 激情深爱一区二区| 亚洲一区影音先锋| 久久久蜜桃精品| 在线播放视频一区| 91在线视频播放地址| 久久国内精品自在自线400部| 一区二区激情视频| 久久精品免费在线观看| 欧美一级夜夜爽| 欧美三级在线视频| 成人蜜臀av电影| 国模娜娜一区二区三区| 视频一区二区不卡| 一区二区三区中文字幕| 久久综合色一综合色88| 欧美亚洲国产一区二区三区| 国产成人精品影视| 久久成人免费网| 午夜av区久久| 最新高清无码专区| 国产亚洲污的网站| 日韩欧美综合一区| 欧美日产在线观看| 欧美系列一区二区| 一本久道久久综合中文字幕| www.成人在线| 成人精品免费看| 韩国精品在线观看| 精品一区在线看| 免费人成精品欧美精品| 五月天亚洲婷婷| 午夜精品久久久久久久99水蜜桃| 亚洲日本一区二区| 亚洲色图制服诱惑| 亚洲婷婷在线视频| 中文字幕一区二区三区不卡| 国产精品国产自产拍高清av王其| 欧美国产日韩a欧美在线观看| 久久男人中文字幕资源站| 精品国产一区a|