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

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

?? biggirth.cpp

?? 已知LDPC碼的稀疏交驗矩陣H
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>#include <stdlib.h>#include <iostream.h>#include <fstream.h>#include "BigGirth.h"#include "Random.h"NodesInGraph::NodesInGraph(void):ParityBitInCt(false),SymbolBitInCt(false) {}void NodesInGraph::setNumOfConnectionSymbolBit(int deg) {  if(deg<=0) {cout<<"Wrong NodesInGraph::setNumOfConnectionSymbolBit()"<<endl;exit(-1);}  numOfConnectionSymbolBit=deg;  connectionSymbolBit=new int[deg];}



void NodesInGraph::setNumOfConnectionParityBit(int deg) {
  if(deg<=0) {cout<<"Wrong NodesInGraph::setNumOfConnectionCheckBit()"<<endl;exit(-1);}
  numOfConnectionParityBit=deg;
  connectionParityBit=new int[deg];
}void NodesInGraph::initConnectionParityBit(void) {  maxDegParity=10000;  numOfConnectionParityBit=0;  connectionParityBit=new int[1];//dummy memory, actually not used}void NodesInGraph::initConnectionParityBit(int deg) {  maxDegParity=deg;  numOfConnectionParityBit=0;  connectionParityBit=new int[1];//dummy memory, actually not used}NodesInGraph::~NodesInGraph(void) {  if(connectionParityBit!=NULL)    delete [] connectionParityBit;  if(connectionSymbolBit!=NULL)    delete [] connectionSymbolBit;}BigGirth::BigGirth(void) {;}BigGirth::BigGirth(int M, int N, int *symbolDegSequence, char *filename, int sglConcent, int tgtGirth,int * H_out):H(NULL){  int i, j, k, m, index, localDepth=100;  int *mid;  EXPAND_DEPTH=(tgtGirth-4)/2; //層數 L  if(EXPAND_DEPTH<0) EXPAND_DEPTH=0;  //      corresponds to depth l in the PEG paper;    //      the target girth = 2*EXPAND_DEPTH+4  //      if set large, then GREEDY algorithm  myrandom=new Random();  //(12345678l, 987654321lu);  (*this).M=M;  (*this).N=N;  (*this).filename=filename;  mid=new int[M];  localGirth=new int[N];  nodesInGraph=new NodesInGraph [N];    for(i=0;i<N;i++){
		nodesInGraph[i].setNumOfConnectionSymbolBit(symbolDegSequence[i]);
		cout<<i<<" "<<symbolDegSequence[i]<<endl;
	}         j=0;         for(k=0;k<N;k++) j+=symbolDegSequence[k];
         k=j/M; //取整數了         for(i=0;i<M;i++) mid[i]=k;            
		 for(i=0;i<j-k*M;i++) mid[i]++; //      
		 k=0; 	 
		 for(i=0;i<M;i++) k+=mid[i];          
	     if(k!=j) {cout<<"Wrong in computing maxDegParity!"<<endl;
		  exit(-1);
		 }      for(i=0;i<M;i++){          if(sglConcent==0) 
			  nodesInGraph[i].initConnectionParityBit(mid[i]);
		  else 
			  nodesInGraph[i].initConnectionParityBit();  //==1	  } 

      ofstream fout2;
	  ofstream fout3;      //fout2.open("drm_fach_58_130.txt",ios::out); //////////////////
	  //fout2.open("drm_sdch_96_138.txt",ios::out);
	  //fout2.open("drm_sdch_54_138.txt",ios::out);
	  //fout2.open("drm_msch_687_968.txt",ios::out);
	  //fout2.open("drm_msch_406_968.txt",ios::out);
	  //fout2.open("drm_msch_228_968.txt",ios::out);

	  //fout2.open("drm_H_sdc_92_138.txt",ios::out);
	  //fout2.open("drm_H_sdc_46_138.txt",ios::out);
	  //fout2.open("drm_H_msc_484_968.txt",ios::out);
	  // fout2.open("drm_H_msc_242_968.txt",ios::out);


	  fout2.open("test/drm_H_msc_546_1080.txt",ios::app);
		if(!fout2)
		{
		 cerr<<"error:unable to open output file: "<<fout2<<endl;		 
		}
		fout2<<M<<endl;
        fout2<<N<<endl;

		fout3.open("test/drm_H_msc10_20_bigGirth.txt",ios::app);
		if(!fout2)
		{
		 cerr<<"error:unable to open output file: "<<fout2<<endl;		 
		}                
		/*開始PEG*/
		for(k=0;k<N;k++){             m=1000000;
			 index=-1;
			 fout3<<" k: "<<k<<endl<<endl;             for(i=0;i<M;i++){                if(nodesInGraph[i].numOfConnectionParityBit<m && nodesInGraph[i].numOfConnectionParityBit<nodesInGraph[i].maxDegParity){	                 m=nodesInGraph[i].numOfConnectionParityBit; //=0	                 index=i;  //選一個最小 i=0				}
			 }             nodesInGraph[k].connectionSymbolBit[0]=index;//least connections of parity bit,定下了第一個             int iter=0; 
             
              ITER:             localGirth[k]=100;  //localDepth ??            
			  for(m=1;m<nodesInGraph[k].numOfConnectionSymbolBit;m++){                   nodesInGraph[k].connectionSymbolBit[m]=selectParityConnect(k, m, localDepth); // localDepth=100                       localGirth[k] = (localGirth[k]>localDepth) ? localDepth : localGirth[k];    //select the smaller one 
					   
					   fout3<<" localGirth["<<k<<"]: "<<localGirth[k]<<" iter: "<<iter<<endl;					   
					   if(k>0 && localGirth[k]<localGirth[k-1] && iter<20){  //出現了變小的趨勢
				             iter++; 
				          goto ITER; ///循環 1,20次
						 }
                  
				  if(localGirth[k]==0 && iter<30){
					iter++; 
				   goto ITER;  ///循環 1,30次
				  }

			}    //if((k+1)%100==0) {             cout<<"k="<<k<<"  ";             
			 for(m=0;m<nodesInGraph[k].numOfConnectionSymbolBit;m++){	                cout<<nodesInGraph[k].connectionSymbolBit[m]<<" ";
		             fout2<<nodesInGraph[k].connectionSymbolBit[m]<<" ";  //輸出結果
			  }                cout<<"LocalGirth="<<2*localGirth[k]+4;                cout<<endl;
	            fout2<<endl;      //}              updateConnection(k);		}

        fout2.clear();
        fout2.close();        fout3.clear();
        fout3.close();    cout<<"Showing the row weight distribution..."<<endl;         for(i=0;i<M;i++)              cout<<nodesInGraph[i].numOfConnectionParityBit<<" ";                cout<<endl;        delete [] mid;              ofstream cycleFile;                 cycleFile.open("test/leftHandGirth.log", ios::out&&ios::app);                    localDepth=100;           
					for(k=0;k<N;k++){                          if(localGirth[k]<localDepth)
							  localDepth=localGirth[k]; //選擇一個較小的                                     if(localDepth==100) 
						                  cycleFile<<"inf ";                                      else
					            	cycleFile<<2*localDepth+4<<" ";					}
             cycleFile<<endl;             cycleFile.close();
			 cycleFile.clear();  cout<<"*************************************************************"<<endl;  cout<<"       The global girth of the PEG Tanner graph :="<< 2*localDepth+4<<endl;  cout<<"*************************************************************"<<endl;
     
//////////////////////////////////
 H=H_out;
/////////////////////////////////////////////
    	for(i=0;i<M;i++){
            for(j=0;j<nodesInGraph[i].numOfConnectionParityBit;j++){    //numOfConnectionParityBit 0->N-1
                H[i*N+nodesInGraph[i].connectionParityBit[j]]=1;      //nodesInGraph[i].connectionParityBit[j] 0->N-1
			}
		}

  cout<<"sam"<<endl;
 	 /* for(i=0;i<M;i++){
             for(j=0;j<N;j++){
                cout<<H[i*N+j]<<" ";
			 }
			 cout<<endl;

		  }
		  */}BigGirth::~BigGirth(void) {  if(H!=NULL){    //for(int i=0;i<M;i++)    //  delete [] H[i];    delete []H;    H=NULL;  }    delete [] localGirth;  delete [] nodesInGraph;  nodesInGraph=NULL;  delete myrandom;}   /*選擇連接校驗點*/int BigGirth::selectParityConnect(int kthSymbol, int mthConnection, int & cycle) { //cycle??  int i, j, k, index, mincycles, numCur, numNext, cpNumCur;  int *tmp, *med;  int *current;//take note of the covering parity bits  mincycles=0;  tmp=new int[M]; 
  med=new int[M];  numCur=mthConnection;  current=new int[mthConnection];  for(i=0;i<mthConnection;i++) 
	  current[i]=nodesInGraph[kthSymbol].connectionSymbolBit[i];   LOOP:      mincycles++;
	  for(i=0;i<M;i++)
		  tmp[i]=0;  //maintain 
	  for(i=0;i<mthConnection;i++)
		  tmp[nodesInGraph[kthSymbol].connectionSymbolBit[i]]=1;
	  for(i=0;i<numCur;i++){
		  for(j=0;j<nodesInGraph[current[i]].numOfConnectionParityBit;j++){
			  for(k=0;k<nodesInGraph[nodesInGraph[current[i]].connectionParityBit[j]].numOfConnectionSymbolBit;k++){
				  tmp[nodesInGraph[nodesInGraph[current[i]].connectionParityBit[j]].connectionSymbolBit[k]]=1;
			  }
		  }
	  }      index=0;
	  cpNumCur=0;
	  for(i=0;i<M;i++){
		  if(tmp[i]==1) 
			  cpNumCur++;
		  if(tmp[i]==1 || nodesInGraph[i].numOfConnectionParityBit>=nodesInGraph[i].maxDegParity)
			  index++; 
	  }

	  if(cpNumCur==numCur){//can not expand any more            //additional handlement to select one having least connections        j=10000000; //dummy number         for(i=0;i<M;i++){            if(tmp[i]==0 && nodesInGraph[i].numOfConnectionParityBit<j && nodesInGraph[i].numOfConnectionParityBit<nodesInGraph[i].maxDegParity)	           j=nodesInGraph[i].numOfConnectionParityBit;		 }
         for(i=0;i<M;i++){             if(tmp[i]==0){    	        if(nodesInGraph[i].numOfConnectionParityBit!=j || nodesInGraph[i].numOfConnectionParityBit>=nodesInGraph[i].maxDegParity){	                   tmp[i]=1;				}			 }		 }          index=0;         for(i=0;i<M;i++)
			 if(tmp[i]==1)
				 index++;    //----------------------------------------------------------------       j=(*myrandom).uniform(0, M-index)+1; //randomly selected       index=0;        for(i=0;i<M;i++){           if(tmp[i]==0) 
			   index++;           if(index==j) 
			   break;		}          delete [] tmp; tmp=NULL;          delete [] current; current=NULL;          return(i);	}   else if(index==M || mincycles>EXPAND_DEPTH){//covering all parity nodes or meet the upper bound on cycles         cycle=mincycles-1;    //作出了改變           for(i=0;i<M;i++)
			   tmp[i]=0;    
		   for(i=0;i<numCur;i++) 
			   tmp[current[i]]=1;             
		   index=0;
		   for(i=0;i<M;i++)
			   if(tmp[i]==1)
				   index++;
			   if(index!=numCur){
				   cout<<"Error in the case of (index==M)"<<endl;exit(-1);
			   }
    //additional handlement to select one having least connections           j=10000000; 
		   for(i=0;i<M;i++){
			   if(tmp[i]==0 && nodesInGraph[i].numOfConnectionParityBit<j && nodesInGraph[i].numOfConnectionParityBit<nodesInGraph[i].maxDegParity)
				   j=nodesInGraph[i].numOfConnectionParityBit;
		   }

		   for(i=0;i<M;i++){
			   if(tmp[i]==0){
				   if(nodesInGraph[i].numOfConnectionParityBit!=j || nodesInGraph[i].numOfConnectionParityBit>=nodesInGraph[i].maxDegParity){
					   tmp[i]=1;
				   }
			   }
		   }          
		   index=0;
		   for(i=0;i<M;i++) 
			   if(tmp[i]==1) 
				   index++;
			   j=(*myrandom).uniform(0, M-index)+1;
			   index=0;

			   for(i=0;i<M;i++){
				   if(tmp[i]==0) index++;
				   if(index==j) 
					   break;
			   }
			   delete [] tmp; tmp=NULL;
			   delete [] current; current=NULL;
			   return(i);
   }
   else if(cpNumCur>numCur && index!=M){
	   delete [] current;
	   current=NULL;
	   numCur=cpNumCur;
	   current=new int[numCur];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本免费一区二区三区| 色综合久久综合网欧美综合网| 亚洲图片有声小说| 亚洲免费电影在线| 亚洲三级小视频| 亚洲精品国产成人久久av盗摄| 国产精品系列在线| 中文字幕亚洲视频| 亚洲精品中文在线影院| 一区二区三区在线观看国产| 亚洲激情六月丁香| 亚洲成人一区二区| 免费观看久久久4p| 国产不卡视频在线播放| 99re热视频这里只精品 | 欧美一三区三区四区免费在线看 | 欧美日本韩国一区| 日韩一级视频免费观看在线| 久久综合精品国产一区二区三区| 久久综合精品国产一区二区三区| 国产欧美中文在线| 亚洲精品videosex极品| 午夜精品成人在线视频| 精品影视av免费| 成人黄色a**站在线观看| 色综合天天性综合| 欧美电影影音先锋| 国产日韩精品一区二区三区| 亚洲黄色性网站| 日本va欧美va欧美va精品| 风流少妇一区二区| 欧美体内she精高潮| 久久女同性恋中文字幕| 一区二区理论电影在线观看| 人人超碰91尤物精品国产| 99久久精品费精品国产一区二区| 欧美日韩你懂得| 久久精品视频一区| 日韩国产在线观看| 国产大陆精品国产| 欧美精品欧美精品系列| 国产视频一区二区在线| 日日摸夜夜添夜夜添亚洲女人| 激情伊人五月天久久综合| 91麻豆蜜桃一区二区三区| 日韩欧美卡一卡二| 亚洲综合成人网| 狠狠色丁香婷婷综合| 91香蕉视频污在线| 久久久蜜臀国产一区二区| 亚洲国产另类av| 99久久精品国产网站| 精品少妇一区二区三区在线视频| 亚洲综合偷拍欧美一区色| 不卡在线观看av| 精品久久久久久久久久久院品网| 一区二区三区精品久久久| 国产成人一区在线| 日韩欧美你懂的| 亚洲一二三四区| 成人国产视频在线观看 | 久色婷婷小香蕉久久| 欧美综合亚洲图片综合区| 国产日韩欧美激情| 青青草97国产精品免费观看无弹窗版| 91丨porny丨首页| 中文字幕乱码日本亚洲一区二区| 老司机免费视频一区二区三区| 欧美视频一区二区三区在线观看| 国产精品久久久久久久久搜平片 | 亚洲精品成人少妇| 97精品视频在线观看自产线路二| 国产欧美日韩精品一区| 国产精品2024| 精品福利一区二区三区免费视频| 1024国产精品| 国产999精品久久久久久绿帽| 精品久久久网站| 国产精品99久久久久| 在线亚洲免费视频| 18涩涩午夜精品.www| 在线国产电影不卡| 91香蕉视频mp4| 欧美一区二区视频在线观看2020 | 精品亚洲欧美一区| 久久综合久久鬼色中文字| 国产成人av电影| 最新高清无码专区| 欧美性生交片4| 麻豆精品一区二区av白丝在线| 欧美va亚洲va| 高清av一区二区| 亚洲综合无码一区二区| 日韩一区二区三区在线| 麻豆精品视频在线观看免费| 国产亚洲欧美日韩俺去了| zzijzzij亚洲日本少妇熟睡| 国产精品国产馆在线真实露脸| 欧美亚洲另类激情小说| 日本亚洲视频在线| 欧美大片一区二区三区| proumb性欧美在线观看| 性做久久久久久久免费看| 精品久久国产老人久久综合| 成人av资源网站| 偷拍一区二区三区四区| 中文字幕精品综合| 欧美日韩精品一区视频| 国产毛片一区二区| 一区二区三区国产精华| 久久久久97国产精华液好用吗| 91网站在线观看视频| 精品综合免费视频观看| 亚洲精品一二三四区| 欧美成人精品3d动漫h| 91丨九色丨国产丨porny| 美腿丝袜一区二区三区| 亚洲欧洲三级电影| 2024国产精品视频| 欧美日韩一区视频| 不卡一区在线观看| 国产乱子伦一区二区三区国色天香| 亚洲欧美在线aaa| 久久久精品国产99久久精品芒果| 在线观看网站黄不卡| www.亚洲精品| 极品少妇xxxx精品少妇偷拍| 亚洲国产成人精品视频| 亚洲人成网站精品片在线观看| 久久精品日产第一区二区三区高清版| 欧美三级午夜理伦三级中视频| 成人动漫视频在线| 国产在线不卡一区| 久久精品国产免费| 日韩在线a电影| 性做久久久久久免费观看欧美| 亚洲乱码国产乱码精品精的特点 | 免费在线观看精品| 亚洲最新视频在线播放| 亚洲欧洲日韩av| 中文字幕第一页久久| 久久久午夜精品| 国产日韩精品久久久| 国产亚洲欧洲一区高清在线观看| 日韩一区二区在线观看| 91精品国产麻豆国产自产在线 | 日韩欧美国产不卡| 91精品黄色片免费大全| 欧美女孩性生活视频| 欧美日韩国产区一| 7777精品伊人久久久大香线蕉完整版| 欧美午夜理伦三级在线观看| 色综合色狠狠综合色| 欧美无砖砖区免费| 欧美日韩另类一区| 日韩亚洲欧美成人一区| 日韩视频在线你懂得| 欧美成va人片在线观看| 精品99999| 国产精品私人自拍| 亚洲人成影院在线观看| 亚洲高清视频在线| 久久99久久久久| 国产传媒欧美日韩成人| 成人精品鲁一区一区二区| www..com久久爱| 在线免费观看视频一区| 欧美精品日韩一本| 久久嫩草精品久久久精品| 国产精品久久久久久久久搜平片 | 欧美tk—视频vk| 久久久综合九色合综国产精品| 久久久综合精品| 一区二区免费在线| 毛片av中文字幕一区二区| 国产精品2024| 欧美性受极品xxxx喷水| 欧美一区二区在线免费观看| 国产亚洲精品中文字幕| 综合久久综合久久| 男人的天堂亚洲一区| 高清不卡一区二区| 欧美日韩国产成人在线免费| 精品国产三级电影在线观看| 日韩毛片高清在线播放| 日本午夜一本久久久综合| 国产精品一二三四五| 欧美日韩国产一区| 国产亚洲欧洲997久久综合| 亚洲国产精品久久久久秋霞影院 | 亚洲一区二区三区视频在线| 国产乱码一区二区三区| 欧美日韩精品电影| 欧美激情中文字幕| 婷婷夜色潮精品综合在线| 成人av在线一区二区| 欧美一区在线视频| 伊人开心综合网| 国产成人激情av| 日韩精品中文字幕在线一区|