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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? make-gen.c

?? 關于LDPC編/譯碼的方針平臺。能隨機產生信源和模擬高斯信道。
?? C
字號:
/* MAKE-GEN.C - Make generator matrix from parity-check matrix. *//* 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. */#include <stdio.h>#include <stdlib.h>#include <math.h>#include "alloc.h"#include "intio.h"#include "open.h"#include "mod2sparse.h"#include "mod2dense.h"#include "mod2convert.h"#include "rcode.h"typedef enum { Sparse, Dense, Mixed } make_method;      /* Ways of making it */void make_dense_mixed (FILE *, make_method, char *);     /* Procs to make it */void make_sparse (FILE *, mod2sparse_strategy, int, int);void usage(void);/* MAIN PROGRAM. */int main( int argc,  char **argv){  char *pchk_file, *gen_file, *other_gen_file;  mod2sparse_strategy strategy;  int abandon_when, abandon_number;  make_method method;  char *meth;  char junk;  FILE *f;  /* Look at arguments. */  if (!(pchk_file = argv[1])   || !(gen_file = argv[2])   || !(meth = argv[3]))  { usage();  }    if (strcmp(meth,"sparse")==0)       { method = Sparse;    strategy = Mod2sparse_minprod;    abandon_number = 0;    if (argv[4])    { if (strcmp(argv[4],"first")==0)        strategy = Mod2sparse_first;      else if (strcmp(argv[4],"mincol")==0)  strategy = Mod2sparse_mincol;      else if (strcmp(argv[4],"minprod")==0) strategy = Mod2sparse_minprod;      else       { usage();      }      if (argv[5])      { if (sscanf(argv[5],"%d%c",&abandon_number,&junk)!=1 || abandon_number<=0         || !argv[6]          || sscanf(argv[6],"%d%c",&abandon_when,&junk)!=1 || abandon_when<=0         || argv[7])        { usage();        }      }    }  }  else if (strcmp(meth,"dense")==0)   { method = Dense;    other_gen_file = argv[4];    if (other_gen_file && argv[5])    { usage();    }  }  else if (strcmp(meth,"mixed")==0)   { method = Mixed;    other_gen_file = argv[4];    if (other_gen_file && argv[5])    { usage();    }  }  else   { usage();  }  /* Read parity check matrix. */  read_pchk(pchk_file);  if (N<=M)  { fprintf(stderr,     "Can't encode if number of bits (%d) isn't greater than number of checks (%d)\n",N,M);    exit(1);  }  /* Create generator matrix file. */  f = open_file_std(gen_file,"wb");  if (f==NULL)  { fprintf(stderr,"Can't create generator matrix file: %s\n",gen_file);    exit(1);  }  /* Allocate space for row and column permutations. */  cols = chk_alloc (N, sizeof *cols);  rows = chk_alloc (M, sizeof *rows);  /* Create generator matrix with specified method. */  switch (method)  { case Sparse:     { make_sparse(f,strategy,abandon_number,abandon_when);       break;    }    case Dense: case Mixed:    { make_dense_mixed(f,method,other_gen_file);      break;    }    default: abort();  }  /* Check for error writing file. */  if (ferror(f) || fclose(f)!=0)  { fprintf(stderr,"Error writing to generator matrix file\n");    exit(1);  }  return 0;}/* MAKE DENSE OR MIXED REPRESENTATION OF GENERATOR MATRIX. */void make_dense_mixed( FILE *f,  make_method method,  char *other_gen_file){   mod2dense *DH, *A, *A2, *AI, *B;  int i, j, c, c2, n;  int *rows_inv;  DH = mod2dense_allocate(M,N);  AI = mod2dense_allocate(M,M);  B  = mod2dense_allocate(M,N-M);  G  = mod2dense_allocate(M,N-M);  mod2sparse_to_dense(H,DH);  /* If another generator matrix was specified, invert using the set of     columns it specifies. */  if (other_gen_file)  {     read_gen(other_gen_file,1,0);    A = mod2dense_allocate(M,M);    mod2dense_copycols(DH,A,cols);    if (!mod2dense_invert(A,AI))    { fprintf(stderr,       "Couldn't invert sub-matrix with column order given in other file\n");      exit(1);    }    mod2dense_copycols(DH,B,cols+M);  }  /* If no other generator matrix was specified, invert using whatever      selection of rows/columns is needed to get a non-singular sub-matrix. */  if (!other_gen_file)  {    A  = mod2dense_allocate(M,N);    A2 = mod2dense_allocate(M,N);    n = mod2dense_invert_selected(DH,A2,rows,cols);    mod2sparse_to_dense(H,DH);  /* DH was destroyed by invert_selected */    if (n>0)    { fprintf(stderr,"Note: Parity check matrix has %d redundant checks\n",n);    }    rows_inv = chk_alloc (M, sizeof *rows_inv);    for (i = 0; i<M; i++)    { rows_inv[rows[i]] = i;    }    mod2dense_copyrows(A2,A,rows);    mod2dense_copycols(A,A2,cols);    mod2dense_copycols(A2,AI,rows_inv);    mod2dense_copycols(DH,B,cols+M);  }  /* Form final generator matrix. */  if (method==Dense)   { mod2dense_multiply(AI,B,G);  }  else if (method==Mixed)  { G = AI;  }  else  { abort();  }  /* Compute and print number of 1s. */  if (method==Dense)    { c = 0;    for (i = 0; i<M; i++)    { for (j = 0; j<N-M; j++)      { c += mod2dense_get(G,i,j);      }    }    fprintf(stderr,      "Number of 1s per check in Inv(A) X B is %.1f\n", (double)c/M);  }  if (method==Mixed)  { c = 0;    for (i = 0; i<M; i++)    { for (j = 0; j<M; j++)      { c += mod2dense_get(G,i,j);      }    }    c2 = 0;    for (i = M; i<N; i++)     { c2 += mod2sparse_count_col(H,cols[i]);    }    fprintf(stderr,     "Number of 1s per check in Inv(A) is %.1f, in B is %.1f, total is %.1f\n",     (double)c/M, (double)c2/M, (double)(c+c2)/M);  }  /* Write the represention of the generator matrix to the file. */  intio_write(f,('G'<<8)+0x80);  if (method==Dense)        { fwrite ("d", 1, 1, f);  }  if (method==Mixed)   { fwrite ("m", 1, 1, f);  }  intio_write(f,M);  intio_write(f,N);  for (i = 0; i<N; i++)   { intio_write(f,cols[i]);  }  mod2dense_write (f, G);}/* MAKE SPARSE REPRESENTATION OF GENERATOR MATRIX. */void make_sparse( FILE *f,  mod2sparse_strategy strategy,  int abandon_number,  int abandon_when){  int n, cL, cU, cB;  int i;  /* Find LU decomposition. */  L = mod2sparse_allocate(M,M);  U = mod2sparse_allocate(M,N);  n = mod2sparse_decomp(H,M,L,U,rows,cols,strategy,abandon_number,abandon_when);  if (n!=0 && abandon_number==0)  { fprintf(stderr,"Note: Parity check matrix has %d redundant checks\n",n);  }  if (n!=0 && abandon_number>0)  { fprintf(stderr,  "Note: Have %d dependent columns, but this could be due to abandonment.\n",n);    fprintf(stderr,  "      Try again with lower abandonment number.\n");    exit(1);  }  /* Compute and print number of 1s. */  cL = cU = cB = 0;  for (i = 0; i<M; i++) cL += mod2sparse_count_row(L,i);  for (i = 0; i<M; i++) cU += mod2sparse_count_row(U,i);  for (i = M; i<N; i++) cB += mod2sparse_count_col(H,cols[i]);  fprintf(stderr,   "Number of 1s per check in L is %.1f, U is %.1f, B is %.1f, total is %.1f\n",    (double)cU/M, (double)cL/M, (double)cB/M, (double)(cL+cU+cB)/M);  /* Write it all to the generator matrix file. */  intio_write(f,('G'<<8)+0x80);  fwrite ("s", 1, 1, f);  intio_write(f,M);  intio_write(f,N);  for (i = 0; i<N; i++)   { intio_write(f,cols[i]);  }  for (i = 0; i<M; i++)   { intio_write(f,rows[i]);  }  mod2sparse_write (f, L);  mod2sparse_write (f, U);}/* PRINT USAGE MESSAGE AND EXIT. */void usage(void){ fprintf (stderr,    "Usage:  make-gen pchk-file gen-file method\n");  fprintf (stderr,    "Method: sparse [ \"first\" | \"mincol\" | \"minprod\" ] [ abandon_num abandon_when ]\n");  fprintf (stderr,    "    or: dense [ other-gen-file ]\n");  fprintf (stderr,    "    or: mixed [ other-gen-file ]\n");  exit(1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大桥未久av一区二区三区中文| 中文字幕五月欧美| 日本中文字幕一区二区视频| 欧美日韩国产影片| 麻豆一区二区三区| 2023国产精品| 成人亚洲一区二区一| 亚洲乱码国产乱码精品精98午夜| 日本韩国视频一区二区| 亚洲va欧美va人人爽午夜| 日韩免费高清电影| 成人一区在线观看| 亚洲精品免费看| 欧美成人aa大片| 成人白浆超碰人人人人| 午夜日韩在线观看| 久久这里只有精品首页| 色综合色综合色综合| 无吗不卡中文字幕| ww久久中文字幕| 97aⅴ精品视频一二三区| 午夜视频一区在线观看| 国产欧美日韩卡一| 欧美视频日韩视频| 国产成a人亚洲| 亚洲图片一区二区| 国产亚洲精品久| 欧美日韩日日摸| 国产精品一区一区| 手机精品视频在线观看| 久久久久久久久久久99999| 色猫猫国产区一区二在线视频| 免费日本视频一区| 成人欧美一区二区三区在线播放| 3d动漫精品啪啪一区二区竹菊| 国产a视频精品免费观看| 天使萌一区二区三区免费观看| 久久婷婷国产综合国色天香 | 中文字幕日本不卡| 91精品国产乱| 91网址在线看| 国产福利不卡视频| 美腿丝袜亚洲一区| 亚洲乱码国产乱码精品精可以看| 久久久蜜桃精品| 欧美乱熟臀69xxxxxx| 99久久久国产精品| 国产综合久久久久影院| 亚洲一区在线播放| 亚洲人成小说网站色在线 | 欧美一区二区黄色| 色综合久久88色综合天天| 国产精品性做久久久久久| 日本成人在线电影网| 一区二区三区精品视频| 国产日韩综合av| 久久综合资源网| 日韩女优av电影在线观看| 欧美三区在线视频| 欧美在线你懂得| 日本精品免费观看高清观看| eeuss国产一区二区三区| 国产麻豆一精品一av一免费| 久久精品国产精品亚洲精品| 亚洲sss视频在线视频| 一区二区三区自拍| 一区二区三区在线观看动漫 | 一区二区三区在线高清| 亚洲视频一区二区在线| 国产精品久久毛片av大全日韩| xfplay精品久久| 久久蜜桃av一区精品变态类天堂| 日韩一级在线观看| 欧美一区二区精美| 日韩一区二区在线观看视频播放| 欧美日韩夫妻久久| 91高清在线观看| 欧美日韩在线三级| 欧美肥妇free| 日韩一区和二区| 精品国产a毛片| 久久精品夜色噜噜亚洲a∨| 26uuu精品一区二区在线观看| 久久综合狠狠综合久久激情| 精品国产污网站| 国产丝袜欧美中文另类| 国产日韩精品一区二区三区| 欧美另类videos死尸| 欧美视频一区二区三区四区| 欧美日本国产视频| 日韩免费在线观看| 国产欧美视频在线观看| 国产精品另类一区| 亚洲免费观看高清完整版在线观看| 亚洲欧洲国产日本综合| 亚洲欧洲av色图| 亚洲国产综合人成综合网站| 久久99精品国产| 色综合中文字幕国产 | 91福利小视频| 91久久国产综合久久| 欧美日韩精品电影| 欧美精品一区二区三区很污很色的| 国产视频在线观看一区二区三区| 国产精品视频你懂的| 一区二区三区在线免费播放| 免费xxxx性欧美18vr| 国产麻豆成人精品| 99久久婷婷国产综合精品电影 | 日韩欧美中文一区二区| 久久综合丝袜日本网| 自拍偷拍国产精品| 亚洲成人在线免费| 国产一区二区三区四| 色av综合在线| 久久影院电视剧免费观看| 1区2区3区精品视频| 久久99热99| 欧美又粗又大又爽| 欧美成人福利视频| 亚洲激情网站免费观看| 精品无人码麻豆乱码1区2区 | 欧美曰成人黄网| 国产无一区二区| 日韩av成人高清| 91免费看片在线观看| 精品国产乱码久久久久久闺蜜 | 欧美成人综合网站| 综合婷婷亚洲小说| 国产在线乱码一区二区三区| 欧美中文字幕一二三区视频| 2020国产精品自拍| 日本不卡免费在线视频| 91蜜桃在线免费视频| 日韩免费一区二区| 亚洲一区二区视频在线观看| 国产精品一二三区在线| 日韩一区二区影院| 一区二区高清免费观看影视大全| 国产成人综合在线观看| 欧美夫妻性生活| 亚洲大片在线观看| 在线欧美日韩精品| ●精品国产综合乱码久久久久| 国产乱码精品一区二区三区五月婷| 欧美日韩午夜在线视频| 亚洲精品国产精品乱码不99| 国产激情精品久久久第一区二区 | 亚洲第一二三四区| 色8久久人人97超碰香蕉987| 国产目拍亚洲精品99久久精品| 秋霞影院一区二区| 欧美理论在线播放| 天天操天天干天天综合网| 色哟哟在线观看一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 成人欧美一区二区三区视频网页| 国产一区二区调教| 久久综合狠狠综合久久激情| 麻豆91在线播放| 日韩亚洲欧美成人一区| 亚洲不卡一区二区三区| 欧美色图在线观看| 一区二区三区国产精华| 欧洲日韩一区二区三区| 一区二区国产视频| 欧美日韩中字一区| 首页国产丝袜综合| 欧美一级黄色录像| 韩国中文字幕2020精品| 亚洲精品在线免费播放| 国产精品一色哟哟哟| 久久久.com| 97久久人人超碰| 亚洲精品国产成人久久av盗摄| 色老综合老女人久久久| 亚洲夂夂婷婷色拍ww47| 欧美亚州韩日在线看免费版国语版 | 欧美日韩1234| 日韩精品久久理论片| 欧美不卡一区二区三区四区| 国产综合成人久久大片91| 日本一区二区三区国色天香| 成人一区在线观看| 一片黄亚洲嫩模| 91精品国产入口在线| 国内精品在线播放| 国产日韩欧美精品在线| 91视频.com| 日韩影视精彩在线| 久久久精品日韩欧美| 99精品国产91久久久久久| 亚洲电影激情视频网站| 精品国产一区二区三区四区四 | 91一区二区在线| 国产成人av一区二区三区在线观看| 国产乱妇无码大片在线观看| 日韩美女主播在线视频一区二区三区 | 9i在线看片成人免费| 亚洲一区在线观看视频|